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

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

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

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

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

示例1: DoCast

void boss_attumen::boss_attumenAI::UpdateAI(const uint32 diff){    if (ResetTimer)    {        if (ResetTimer <= diff)        {            ResetTimer = 0;            Unit* pMidnight = Unit::GetUnit(*me, Midnight);            if (pMidnight)            {                pMidnight->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);                pMidnight->SetVisible(true);            }            Midnight = 0;            me->SetVisible(false);            me->Kill(me);        } else ResetTimer -= diff;    }    //Return since we have no target    if (!UpdateVictim())        return;    if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE))        return;    if (CleaveTimer <= diff)    {        DoCast(me->getVictim(), SPELL_SHADOWCLEAVE);        CleaveTimer = urand(10000, 15000);    } else CleaveTimer -= diff;    if (CurseTimer <= diff)    {        DoCast(me->getVictim(), SPELL_INTANGIBLE_PRESENCE);        CurseTimer = 30000;    } else CurseTimer -= diff;    if (RandomYellTimer <= diff)    {        DoScriptText(RAND(SAY_RANDOM1, SAY_RANDOM2), me);        RandomYellTimer = urand(30000, 60000);    } else RandomYellTimer -= diff;    if (me->GetUInt32Value(UNIT_FIELD_DISPLAYID) == MOUNTED_DISPLAYID)    {        if (ChargeTimer <= 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 = Unit::GetUnit(*me, (*itr)->getUnitGuid());                if (target && !target->IsWithinDist(me, ATTACK_DISTANCE, false))                    target_list.push_back(target);                target = NULL;            }            if (!target_list.empty())                target = *(target_list.begin()+rand()%target_list.size());            DoCast(target, SPELL_BERSERKER_CHARGE);            ChargeTimer = 20000;        } else ChargeTimer -= diff;    }    else    {        if (HealthBelowPct(25))        {            Creature* pMidnight = Unit::GetCreature(*me, Midnight);            if (pMidnight && pMidnight->GetTypeId() == TYPEID_UNIT)            {                CAST_AI(boss_midnight::boss_midnightAI, (pMidnight->AI()))->Mount(me);                me->SetHealth(pMidnight->GetHealth());                DoResetThreat();            }        }    }    DoMeleeAttackIfReady();}
开发者ID:Krill156,项目名称:FreyaCore,代码行数:81,


示例2: WaypointReached

//.........这里部分代码省略.........                    SetRun(false);                    break;                case 60:                    me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);                    //make horsie run off                    SetEscortPaused(true);                    me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);                    pInstance->SetData(TYPE_THRALL_PART2, DONE);                    SetRun();                    break;                case 64:                    SetRun(false);                    break;                case 68:                    me->SummonCreature(MOB_ENTRY_BARN_PROTECTOR, 2500.22f, 692.60f, 55.50f, 2.84f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                    me->SummonCreature(MOB_ENTRY_BARN_LOOKOUT, 2500.13f, 696.55f, 55.51f, 3.38f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                    me->SummonCreature(MOB_ENTRY_BARN_GUARDSMAN, 2500.55f, 693.64f, 55.50f, 3.14f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                    me->SummonCreature(MOB_ENTRY_BARN_GUARDSMAN, 2500.94f, 695.81f, 55.50f, 3.14f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                    break;                case 71:                    SetRun();                    break;                case 81:                    SetRun(false);                    break;                case 83:                    me->SummonCreature(MOB_ENTRY_CHURCH_PROTECTOR, 2627.33f, 646.82f, 56.03f, 4.28f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);                    me->SummonCreature(MOB_ENTRY_CHURCH_LOOKOUT, 2624.14f, 648.03f, 56.03f, 4.50f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);                    me->SummonCreature(MOB_ENTRY_CHURCH_GUARDSMAN, 2625.32f, 649.60f, 56.03f, 4.38f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);                    me->SummonCreature(MOB_ENTRY_CHURCH_GUARDSMAN, 2627.22f, 649.00f, 56.03f, 4.34f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5000);                    break;                case 84:                    DoScriptText(SAY_TH_CHURCH_END, me);                    SetRun();                    break;                case 91:                    me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);                    SetRun(false);                    break;                case 93:                    me->SummonCreature(MOB_ENTRY_INN_PROTECTOR, 2652.71f, 660.31f, 61.93f, 1.67f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                    me->SummonCreature(MOB_ENTRY_INN_LOOKOUT, 2648.96f, 662.59f, 61.93f, 0.79f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                    me->SummonCreature(MOB_ENTRY_INN_GUARDSMAN, 2657.36f, 662.34f, 61.93f, 2.68f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                    me->SummonCreature(MOB_ENTRY_INN_GUARDSMAN, 2656.39f, 659.77f, 61.93f, 2.61f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                    break;                case 94:                    if (uint64 TarethaGUID = pInstance->GetData64(DATA_TARETHA))                    {                        if (Unit* Taretha = Unit::GetUnit((*me), TarethaGUID))                            DoScriptText(SAY_TA_ESCAPED, Taretha, me);                    }                    break;                case 95:                    DoScriptText(SAY_TH_MEET_TARETHA, me);                    pInstance->SetData(TYPE_THRALL_PART3, DONE);                    SetEscortPaused(true);                    break;                case 96:                    DoScriptText(SAY_TH_EPOCH_WONDER, me);                    break;                case 97:                    DoScriptText(SAY_TH_EPOCH_KILL_TARETHA, me);                    SetRun();                    break;                case 98:                    //trigger epoch Yell("Thrall! Come outside and face your fate! ....")                    //from here, thrall should not never be allowed to move to point 106 which he currently does.                    break;                case 106:                    {                        //trigger taretha to run down outside                        if (Creature* Taretha = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TARETHA)))                        {                            if (Player* pPlayer = GetPlayerForEscort())                                CAST_AI(npc_escortAI, (Taretha->AI()))->Start(false, true, pPlayer->GetGUID());                        }                        //kill credit Creature for quest                        Map* pMap = me->GetMap();                        Map::PlayerList const& players = pMap->GetPlayers();                        if (!players.isEmpty() && pMap->IsDungeon())                        {                            for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)                            {                                if (Player* pPlayer = itr->getSource())                                    pPlayer->KilledMonsterCredit(20156, 0);                            }                        }                        //alot will happen here, thrall and taretha talk, erozion appear at spot to explain                        me->SummonCreature(EROZION_ENTRY, 2646.47f, 680.416f, 55.38f, 4.16f, TEMPSUMMON_TIMED_DESPAWN, 120000);                    }                    break;                case 108:                    //last waypoint, just set Thrall invisible, respawn is turned off                    me->SetVisible(false);                    break;            }        }
开发者ID:AwkwardDev,项目名称:CataOld,代码行数:101,


示例3: JustDied

 void JustDied(Unit* killer) {     if (Creature* herald = me->FindNearestCreature(ENTRY_VAZRUDEN_HERALD, 150))         CAST_AI(boss_vazruden_the_herald::boss_vazruden_the_heraldAI, herald->AI())->SentryDownBy(killer); }
开发者ID:S-proyect,项目名称:Emu-S,代码行数:5,


示例4: HandleEffectRemove

 void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) {     if (GetTarget()->IsAIEnabled)         CAST_AI(LoathebAI, GetTarget()->GetAI())->Talk(SAY_NECROTIC_AURA_REMOVED); }
开发者ID:Angmon,项目名称:TrinityCore,代码行数:5,


示例5: UpdateAI

//.........这里部分代码省略.........            //ChaosBlast_Timer            if (!me->getVictim())                return;            if (me->GetDistance(me->getVictim()) < 30)                me->StopMoving();            if (ChaosBlast_Timer <= diff)            {                // will cast only when in range of spell                if (me->GetDistance(me->getVictim()) < 30)                {                    //DoCast(me->getVictim(), SPELL_CHAOS_BLAST, true);                    int damage = 100;                    me->CastCustomSpell(me->getVictim(), SPELL_CHAOS_BLAST, &damage, NULL, NULL, false, NULL, NULL, me->GetGUID());                }                ChaosBlast_Timer = 3000;            } else ChaosBlast_Timer -= diff;            //Summon Inner Demon            if (InnerDemons_Timer <= diff)            {                std::list<HostileReference *>& ThreatList = me->getThreatManager().getThreatList();                std::vector<Unit* > TargetList;                for (std::list<HostileReference *>::const_iterator itr = ThreatList.begin(); itr != ThreatList.end(); ++itr)                {                    Unit* tempTarget = Unit::GetUnit(*me, (*itr)->getUnitGuid());                    if (tempTarget && tempTarget->GetTypeId() == TYPEID_PLAYER && tempTarget->GetGUID() != me->getVictim()->GetGUID() && TargetList.size()<5)                        TargetList.push_back(tempTarget);                }                SpellEntry *spell = (SpellEntry *)GetSpellStore()->LookupEntry(SPELL_INSIDIOUS_WHISPER);                for (std::vector<Unit* >::const_iterator itr = TargetList.begin(); itr != TargetList.end(); ++itr)                {                    if ((*itr) && (*itr)->isAlive())                    {                        Creature* demon = me->SummonCreature(INNER_DEMON_ID, (*itr)->GetPositionX()+10, (*itr)->GetPositionY()+10, (*itr)->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                        if (demon)                        {                            demon->AI()->AttackStart((*itr));                            CAST_AI(mob_inner_demonAI, demon->AI())->victimGUID = (*itr)->GetGUID();                            for (int i=0; i<3; i++)                            {                                if (!spell->Effect[i])                                    continue;                                (*itr)->AddAura(new InsidiousAura(spell, i, NULL, (*itr), (*itr)));                            }                            if (InnerDemon_Count > 4)                                InnerDemon_Count = 0;                            //Safe storing of creatures                            InnderDemon[InnerDemon_Count] = demon->GetGUID();                            //Update demon count                            ++InnerDemon_Count;                        }                    }                }                DoScriptText(SAY_INNER_DEMONS, me);                InnerDemons_Timer = 999999;            } else InnerDemons_Timer -= diff;            //Switch_Timer            if (SwitchToHuman_Timer <= diff)            {                //switch to nightelf form                me->SetDisplayId(MODEL_NIGHTELF);                me->LoadEquipment(me->GetEquipmentId());                CastConsumingMadness();                DespawnDemon();                DemonForm = false;                NeedThreatReset = true;                SwitchToHuman_Timer = 60000;            } else SwitchToHuman_Timer -= diff;        }        if (!IsFinalForm && (me->GetHealth()*100 / me->GetMaxHealth()) < 15)        {            //at this point he divides himself in two parts            CastConsumingMadness();            DespawnDemon();            Creature* Copy = NULL;            Copy = DoSpawnCreature(DEMON_FORM, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 6000);            if (Copy)             {                 Demon = Copy->GetGUID();                if (me->getVictim())                    Copy->AI()->AttackStart(me->getVictim());            }            //set nightelf final form            IsFinalForm = true;            DemonForm = false;            DoScriptText(SAY_FINAL_FORM, me);            me->SetDisplayId(MODEL_NIGHTELF);            me->LoadEquipment(me->GetEquipmentId());        }    }
开发者ID:deremix,项目名称:darmixcore,代码行数:101,


示例6: JustDied

 void JustDied(Unit* Killer) {    if (Creature *Kelidan = me->FindNearestCreature(ENTRY_KELIDAN, 100))        CAST_AI(boss_kelidan_the_breakerAI, Kelidan->AI())->ChannelerDied(Killer); }
开发者ID:Blumfield,项目名称:TBCPvP,代码行数:5,


示例7: OnGossipHello

    bool OnGossipHello(Player* player, Creature* creature) override    {        if (player->GetQuestStatus(QUEST_GOOD_HELP_IS_HARD_TO_FIND) == QUEST_STATUS_INCOMPLETE && !CAST_AI(npc_defiant_troll::npc_defiant_trollAI, creature->AI())->IsWorking())        {            player->CastSpell(creature, SPELL_LIGHTNING_VISUAL, true);            player->KilledMonsterCredit(DEFFIANT_KILL_CREDIT, creature->GetGUID());            creature->AI()->Talk(SAY_WORK);            creature->RemoveAllAuras();            if (GameObject* deposit = creature->FindNearestGameObject(GO_DEPOSIT, 20))                creature->GetMotionMaster()->MovePoint(1, deposit->GetPositionX() - 1.0f, deposit->GetPositionY(), deposit->GetPositionZ());            if (player->GetQuestStatus(QUEST_GOOD_HELP_IS_HARD_TO_FIND) == QUEST_STATUS_COMPLETE)                player->RemoveAura(SPELL_LIGHTNING_VISUAL);            player->CLOSE_GOSSIP_MENU();            return true;        }        player->CLOSE_GOSSIP_MENU();        return false;    }
开发者ID:Caydan,项目名称:mop548,代码行数:24,


示例8: JustDied

 void JustDied(Unit* pKiller) {     if (pInstance)         if (Creature* pSjonnir = Unit::GetCreature(*me, pInstance->GetData64(DATA_SJONNIR)))             CAST_AI(boss_sjonnirAI, pSjonnir->AI())->KilledIronSludge(); }
开发者ID:Archives,项目名称:ro_core,代码行数:6,


示例9: DoSplit

        void DoSplit(int atPercent /* 75 50 25 */)        {            DoScriptText(SAY_SPLIT, me);            ov_mycoordinates *place1 = new ov_mycoordinates(-8340.782227f, 2083.814453f, 125.648788f, 0);            ov_mycoordinates *place2 = new ov_mycoordinates(-8341.546875f, 2118.504639f, 133.058151f, 0);            ov_mycoordinates *place3 = new ov_mycoordinates(-8318.822266f, 2058.231201f, 133.058151f, 0);            ov_mycoordinates *bossc=place1, *i1=place2, *i2=place3;            switch (urand(0, 2))            {                case 0:                    bossc=place1;                    i1=place2;                    i2=place3;                    break;                case 1:                    bossc=place2;                    i1=place1;                    i2=place3;                    break;                case 2:                    bossc=place3;                    i1=place1;                    i2=place2;                    break;            }            for (uint16 i = 0; i < 41; ++i)            {                if (Player* target = CAST_PLR(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)))                {                    if (Group* pGrp = target->GetGroup())                        for (uint8 ico = 0; ico < TARGETICONCOUNT; ++ico)                        {                            //if (grp->m_targetIcons[ico] == me->GetGUID()) -- private member :(                            pGrp->SetTargetIcon(ico, 0, 0);                        }                    break;                }            }            me->RemoveAllAuras();            me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);            me->SetVisible(false);            me->SetPosition(bossc->x, bossc->y, bossc->z, bossc->r);            Invisible = true;            DoResetThreat();            DoStopAttack();            switch (atPercent)            {                case 75: Images75 = true; break;                case 50: Images50 = true; break;                case 25: Images25 = true; break;            }            Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0);            Creature* Image1 = me->SummonCreature(15263, i1->x, i1->y, i1->z, i1->r, TEMPSUMMON_CORPSE_DESPAWN, 30000);            if (Image1)            {                Image1->SetMaxHealth(me->GetMaxHealth() / 5);                Image1->SetHealth(me->GetHealth() / 5);                if (target)                    Image1->AI()->AttackStart(target);                CAST_AI(boss_skeram::boss_skeramAI, Image1->AI())->IsImage = true;            }            Creature* Image2 = me->SummonCreature(15263, i2->x, i2->y, i2->z, i2->r, TEMPSUMMON_CORPSE_DESPAWN, 30000);            if (Image2)            {                Image2->SetMaxHealth(me->GetMaxHealth() / 5);                Image2->SetHealth(me->GetHealth() / 5);                if (target)                    Image2->AI()->AttackStart(target);                CAST_AI(boss_skeram::boss_skeramAI, Image2->AI())->IsImage = true;            }            Invisible = true;            delete place1;            delete place2;            delete place3;        }
开发者ID:S-proyect,项目名称:Emu-S,代码行数:85,


示例10: JustSummoned

		void JustSummoned(Creature* summon) override		{ 			CAST_AI(npc_injured_soldier_dummy::npc_injured_soldier_dummyAI, summon->AI())->_phase = 1;		}
开发者ID:Arkania,项目名称:ArkCORE-NG,代码行数:4,


示例11: CAST_AI

void mob_qiraj_war_spawn::mob_qiraj_war_spawnAI::JustDied(Unit* /*slayer*/){    me->RemoveCorpse();    if (Creature* Mob = (Unit::GetCreature(*me, MobGUID)))        CAST_AI(npc_anachronos_quest_trigger::npc_anachronos_quest_triggerAI, Mob->AI())->LiveCounter();};
开发者ID:H4D3S,项目名称:DarkmoonCore-Cataclysm,代码行数:6,


示例12: OnGossipHello

    bool OnGossipHello(Player* pPlayer, GameObject* pGO)    {        if (Creature *pAnraphet = pGO->FindNearestCreature(BOSS_TEMPLE_GUARDIAN_ANHUUR, 1000, true))                      if (boss_temple_guardian_anhuur::boss_temple_guardian_anhuurAI* pAI = CAST_AI(boss_temple_guardian_anhuur::boss_temple_guardian_anhuurAI, pAnraphet->AI()))                                pAI->ActivateLever(pGO->GetEntry());                pGO->SetGoState(GO_STATE_ACTIVE);        //pPlayer->CastSpell(pGO, 68398, false);        if (Creature* beam = pGO->FindNearestCreature(40183, 30.0f, true))            beam->Kill(beam);        return true;    }
开发者ID:Exodius,项目名称:Atlantiss,代码行数:14,


示例13: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (!EventBegun)                return;            if (HealthBelowPct(15) && !HasYelledOnce)            {                DoScriptText(SAY_LOW_HEALTH, me);                HasYelledOnce = true;            }            if (ShadeGUID && !StartCombat)            {                Creature* Shade = (Unit::GetCreature((*me), ShadeGUID));                if (Shade && Shade->isAlive())                {                    if (CAST_AI(boss_shade_of_akama::boss_shade_of_akamaAI, Shade->AI())->IsBanished)                    {                        if (CastSoulRetrieveTimer <= diff)                        {                            DoCast(Shade, SPELL_AKAMA_SOUL_CHANNEL);                            CastSoulRetrieveTimer = 500;                        } else CastSoulRetrieveTimer -= diff;                    }                    else                    {                        me->InterruptNonMeleeSpells(false);                        StartCombat = true;                    }                }            }            if (ShadeHasDied && (WayPointId == 1))            {                if (pInstance)                    pInstance->SetData(DATA_SHADEOFAKAMAEVENT, DONE);                me->GetMotionMaster()->MovePoint(WayPointId, AkamaWP[1].x, AkamaWP[1].y, AkamaWP[1].z);                ++WayPointId;            }            if (!ShadeHasDied && StartCombat)            {                if (CheckTimer <= diff)                {                    if (ShadeGUID)                    {                        Creature* Shade = Unit::GetCreature((*me), ShadeGUID);                        if (Shade && !Shade->isAlive())                        {                            ShadeHasDied = true;                            WayPointId = 0;                            me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);                            me->GetMotionMaster()->MovePoint(WayPointId, AkamaWP[0].x, AkamaWP[0].y, AkamaWP[0].z);                        }                        if (Shade && Shade->isAlive())                        {                            if (Shade->getThreatManager().getThreatList().size() < 2)                                Shade->AI()->EnterEvadeMode();                        }                    }                    CheckTimer = 5000;                } else CheckTimer -= diff;            }            if (SummonBrokenTimer && BrokenSummonIndex < 4)            {                if (SummonBrokenTimer <= diff)                {                    for (uint8 i = 0; i < 4; ++i)                    {                        float x = BrokenCoords[BrokenSummonIndex].x + (i*5);                        float y = BrokenCoords[BrokenSummonIndex].y + (1*5);                        float z = BrokenCoords[BrokenSummonIndex].z;                        float o = BrokenCoords[BrokenSummonIndex].o;                        Creature* Broken = me->SummonCreature(CREATURE_BROKEN, x, y, z, o, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000);                        if (Broken)                        {                            float wx = BrokenWP[BrokenSummonIndex].x + (i*5);                            float wy = BrokenWP[BrokenSummonIndex].y + (i*5);                            float wz = BrokenWP[BrokenSummonIndex].z;                            Broken->GetMotionMaster()->MovePoint(0, wx, wy, wz);                            Broken->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);                            BrokenList.push_back(Broken->GetGUID());                        }                    }                    ++BrokenSummonIndex;                    SummonBrokenTimer = 1000;                } else SummonBrokenTimer -= diff;            }            if (SoulRetrieveTimer)            {                if (SoulRetrieveTimer <= diff)                {                    switch (EndingTalkCount)                    {                    case 0:                        me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);                        ++EndingTalkCount;                        SoulRetrieveTimer = 2000;//.........这里部分代码省略.........
开发者ID:BoThay,项目名称:ArkCORE,代码行数:101,


示例14: UpdateAI

        void UpdateAI(const uint32 diff)        {            npc_escortAI::UpdateAI(diff);            if (PlayerGUID)            {                Player* AuraPlayer = Unit::GetPlayer(*me,PlayerGUID);                if (!AuraPlayer)                {                    me->DisappearAndDie();                    return;                }                else                {                    if (AuraPlayer->isDead())                    {                        AuraPlayer->FailQuest(QUEST_A_FALL_FROM_GRACE);                        me->DisappearAndDie();                        return;                    }                    if (EndSequence)                    {                        if (EndSequenceTimer <= diff)                        {                            EndSequenceTimer = 12000;                            if (EndSayCount == 6)                            {                                me->GetMotionMaster()->MoveJump(HighAbbotLandgrenJumpPos[0][0][0], HighAbbotLandgrenJumpPos[0][0][1], HighAbbotLandgrenJumpPos[0][0][2], 0.5f, 8.0f);                                EndSequenceTimer = 2000;                            }                            if (EndSayCount == 7)                            {                                me->MonsterSay(HighAbbotText[6], LANG_UNIVERSAL, 0);                                EndSequenceTimer = 2000;                            }                            if (EndSayCount == 8)                            {                                AuraPlayer->KilledMonsterCredit(27444, 0);                                if (AuraPlayer->HasAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE))                                    AuraPlayer->RemoveAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE);                                if (AuraPlayer->HasAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE))                                    AuraPlayer->RemoveAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE);                                EndSequence = false;                            }                            if (EndSayCount < 6)                                me->MonsterSay(HighAbbotText[EndSayCount], LANG_UNIVERSAL, PlayerGUID);                            EndSayCount++;                        } else                            EndSequenceTimer -= diff;                    }                    if (!EventStarted && me->GetEntry() == NPC_HIGH_ABBOT_LANDGREN_ESCORTEE_ENTRY)                    {                        Start(false, false, PlayerGUID, 0, false);                        EventStarted = true;                    }                    if (CheckPlayerDist)                        if (AuraPlayer->GetDistance(2827.796f, -420.191f, 118.196f) < 4)                            StartMove();                    if (AuraCheckTimer <= diff) {                        if (AuraPlayer && AuraPlayer->GetQuestStatus(QUEST_A_FALL_FROM_GRACE) == QUEST_STATUS_INCOMPLETE && AuraPlayer->getQuestStatusMap()[QUEST_A_FALL_FROM_GRACE].CreatureOrGOCount[0] == 1 && !AuraPlayer->HasAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE) && !AuraPlayer->HasAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE)) {                            switch(AuraPlayer->getGender())                            {                            case GENDER_FEMALE:                                AuraPlayer->CastSpell(AuraPlayer, SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE, false);                                break;                            case GENDER_MALE:                                AuraPlayer->CastSpell(AuraPlayer, SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE, false);                                break;                            }                        }                        AuraCheckTimer = 300;                    } else                        AuraCheckTimer -= diff;                    if (me->GetEntry() != NPC_HIGH_ABBOT_LANDGREN_ESCORTEE_ENTRY)                    {                        if (BodyGuardStart && AuraPlayer->GetQuestStatus(QUEST_A_FALL_FROM_GRACE) == QUEST_STATUS_INCOMPLETE && AuraPlayer->getQuestStatusMap()[QUEST_A_FALL_FROM_GRACE].CreatureOrGOCount[0] == 1) {                            if (Creature* tmp = me->FindNearestCreature(NPC_DEVOUT_BODYGUARD, Range, true))                            {                                if (BodyGuardMoveTimer <= diff)                                {                                    CAST_AI(npc_devout_bodyguard::npc_devout_bodyguardAI, tmp->AI())->StartMove();                                    BodyGuardMoveTimer = 6000;                                    Range = 4.0f;                                    if (GuardCount == 1)                                        BodyGuardStart = false;                                    GuardCount++;                                } else                                    BodyGuardMoveTimer -= diff;                            }                        }                    }                }//.........这里部分代码省略.........
开发者ID:Shutok,项目名称:WingsEMU,代码行数:101,


示例15: UpdateAI

        void UpdateAI(const uint32 uiDiff)        {            if (uiPhase)            {                if (uiTimer <= uiDiff)                {                    switch(uiPhase)                    {                        case 1:                            DoScriptText(SAY_QUEST_ACCEPT_ATTACK, me);                            uiTimer = 3000;                            uiPhase = 2;                            break;                        case 2:                            if (Creature* pTyrion = me->FindNearestCreature(NPC_TYRION, 10.0f))                                DoScriptText(SAY_TYRION_1, pTyrion);                            uiTimer = 3000;                            uiPhase = 3;                            break;                        case 3:                            me->UpdateEntry(NPC_PRIESTESS_TYRIONA, ALLIANCE);                            uiTimer = 2000;                            uiPhase = 4;                            break;                        case 4:                           SetEscortPaused(false);                           uiPhase = 0;                           uiTimer = 0;                           break;                        case 5:                            if (Creature* pGuard = me->FindNearestCreature(NPC_STORMWIND_ROYAL, 10.0f, true))                                DoScriptText(SAY_GUARD_1, pGuard);                            uiTimer = 3000;                            uiPhase = 6;                            break;                        case 6:                            DoScriptText(SAY_SPYBOT_2, me);                            uiTimer = 3000;                            uiPhase = 7;                            break;                        case 7:                            SetEscortPaused(false);                            uiTimer = 0;                            uiPhase = 0;                            break;                        case 8:                            if (Creature* pLescovar = me->FindNearestCreature(NPC_LORD_GREGOR_LESCOVAR, 10.0f))                                DoScriptText(SAY_LESCOVAR_1, pLescovar);                            uiTimer = 3000;                            uiPhase = 9;                            break;                        case 9:                            DoScriptText(SAY_SPYBOT_4, me);                            uiTimer = 3000;                            uiPhase = 10;                            break;                        case 10:                            if (Creature* pLescovar = me->FindNearestCreature(NPC_LORD_GREGOR_LESCOVAR, 10.0f))                            {                                if (Player* pPlayer = GetPlayerForEscort())                                {                                    CAST_AI(npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, pLescovar->AI())->Start(false, false, pPlayer->GetGUID());                                    CAST_AI(npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, pLescovar->AI())->SetMaxPlayerDistance(200.0f);                                }                            }                            me->DisappearAndDie();                            uiTimer = 0;                            uiPhase = 0;                            break;                    }                } else uiTimer -= uiDiff;            }            npc_escortAI::UpdateAI(uiDiff);            if (!UpdateVictim())                return;            DoMeleeAttackIfReady();        }
开发者ID:Akenyshka,项目名称:MythCore,代码行数:79,


示例16: DoEncounterAction

        bool DoEncounterAction(Unit *who, bool attack, bool reset, bool checkAllDead)        {            if (!instance)                return false;            Creature *Thane = CAST_CRE(Unit::GetUnit(*me, instance->GetData64(DATA_THANE)));            Creature *Lady = CAST_CRE(Unit::GetUnit(*me, instance->GetData64(DATA_LADY)));            Creature *Baron = CAST_CRE(Unit::GetUnit(*me, instance->GetData64(DATA_BARON)));            Creature *Sir = CAST_CRE(Unit::GetUnit(*me, instance->GetData64(DATA_SIR)));            if (Thane && Lady && Baron && Sir)            {                if (attack && who)                {                    CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Thane->AI())->encounterActionAttack = true;                    CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Lady->AI())->encounterActionAttack = true;                    CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Baron->AI())->encounterActionAttack = true;                    CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Sir->AI())->encounterActionAttack = true;                    CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Thane->AI())->AttackStart(who);                    CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Lady->AI())->AttackStart(who);                    CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Baron->AI())->AttackStart(who);                    CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Sir->AI())->AttackStart(who);                }                if (reset)                {                    if (instance->GetBossState(BOSS_HORSEMEN) != NOT_STARTED)                    {                        if (!Thane->isAlive())                            Thane->Respawn();                        if (!Lady->isAlive())                            Lady->Respawn();                        if (!Baron->isAlive())                            Baron->Respawn();                        if (!Sir->isAlive())                            Sir->Respawn();                        CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Thane->AI())->encounterActionReset = true;                        CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Lady->AI())->encounterActionReset = true;                        CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Baron->AI())->encounterActionReset = true;                        CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Sir->AI())->encounterActionReset = true;                        CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Thane->AI())->EnterEvadeMode();                        CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Lady->AI())->EnterEvadeMode();                        CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Baron->AI())->EnterEvadeMode();                        CAST_AI(boss_four_horsemen::boss_four_horsemenAI, Sir->AI())->EnterEvadeMode();                    }                }                if (checkAllDead)                    return !Thane->isAlive() && !Lady->isAlive() && !Baron->isAlive() && !Sir->isAlive();            }            return false;        }
开发者ID:AwkwardDev,项目名称:CataOld,代码行数:58,


示例17: UpdateAI

            void UpdateAI(const uint32 diff)            {                if (!me->isInCombat())                {                    if (RandChat_Timer <= diff)                    {                        DoScriptText(RandomTaunt[rand()%6].id, me);                        RandChat_Timer = 90000;                    }                    else                        RandChat_Timer -= diff;                }                if (!UpdateVictim())                    return;                if (NeedCheckCube) NeedCheckCubeStatus();                if (Berserk_Timer <= diff)                {                    DoCast(me, SPELL_BERSERK, true);                    DoScriptText(EMOTE_BERSERK, me);                    Berserk_Timer = 60000;                }                else                    Berserk_Timer -= diff;                if (Cleave_Timer <= diff)                {                    DoCast(me->getVictim(), SPELL_CLEAVE);                    Cleave_Timer = 10000;                }                else                    Cleave_Timer -= diff;                if (BlastNova_Timer <= diff)                {                    // to avoid earthquake interruption                    if (!me->HasUnitState(UNIT_STATE_STUNNED))                    {                        DoScriptText(EMOTE_BLASTNOVA, me);                        DoCast(me, SPELL_BLASTNOVA);                        BlastNova_Timer = 60000;                    }                }                else                    BlastNova_Timer -= diff;                if (Quake_Timer <= diff)                {                    // to avoid blastnova interruption                    if (!me->IsNonMeleeSpellCasted(false))                    {                        DoCast(me, SPELL_QUAKE_TRIGGER, true);                        Quake_Timer = 50000;                    }                }                else                    Quake_Timer -= diff;                if (Blaze_Timer <= diff)                {                    if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))                    {                        float x, y, z;                        target->GetPosition(x, y, z);                        Creature* summon = me->SummonCreature(MOB_ABYSSAL, x, y, z, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);                        if (summon)                        {                            CAST_AI(mob_abyssal::mob_abyssalAI, summon->AI())->SetTrigger(2);                            DoCast(summon, SPELL_BLAZE_TARGET, true);                            summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);                        }                    }                    Blaze_Timer = urand(20000, 40000);                }                else                    Blaze_Timer -= diff;                if (!Phase3 && HealthBelowPct(30)                    && !me->IsNonMeleeSpellCasted(false) // blast nova                    && !me->HasUnitState(UNIT_STATE_STUNNED)) // shadow cage and earthquake                {                    Phase3 = true;                    DoScriptText(SAY_CHAMBER_DESTROY, me);                    DoCast(me, SPELL_CAMERA_SHAKE, true);                    DoCast(me, SPELL_DEBRIS_KNOCKDOWN, true);                    if (instance)                        instance->SetData(DATA_COLLAPSE, true);                }                if (Phase3)                {                    if (Debris_Timer <= diff)                    {                        if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))                        {                            float x, y, z;                            target->GetPosition(x, y, z);//.........这里部分代码省略.........
开发者ID:mryanlam,项目名称:Old-TrinityCore-Project-Script.me-,代码行数:101,


示例18: Talk

void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff){    if (EntryYellTimer)    {        if (EntryYellTimer <= diff)        {            Talk(SAY_JULIANNE_ENTER);            EntryYellTimer = 0;        } else EntryYellTimer -= diff;    }    if (AggroYellTimer)    {        if (AggroYellTimer <= diff)        {            Talk(SAY_JULIANNE_AGGRO);            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);            me->setFaction(16);            AggroYellTimer = 0;        } else AggroYellTimer -= diff;    }    if (DrinkPoisonTimer)    {        //will do this 2secs after spell hit. this is time to display visual as expected        if (DrinkPoisonTimer <= diff)        {            PretendToDie(me);            Phase = PHASE_ROMULO;            SummonRomuloTimer = 10000;            DrinkPoisonTimer = 0;        } else DrinkPoisonTimer -= diff;    }    if (Phase == PHASE_ROMULO && !SummonedRomulo)    {        if (SummonRomuloTimer <= diff)        {            if (Creature* pRomulo = me->SummonCreature(CREATURE_ROMULO, ROMULO_X, ROMULO_Y, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, HOUR*2*IN_MILLISECONDS))            {                RomuloGUID = pRomulo->GetGUID();                CAST_AI(boss_romulo::boss_romuloAI, pRomulo->AI())->JulianneGUID = me->GetGUID();                CAST_AI(boss_romulo::boss_romuloAI, pRomulo->AI())->Phase = PHASE_ROMULO;                DoZoneInCombat(pRomulo);                pRomulo->setFaction(16);            }            SummonedRomulo = true;        } else SummonRomuloTimer -= diff;    }    if (ResurrectSelfTimer)    {        if (ResurrectSelfTimer <= diff)        {            Resurrect(me);            Phase = PHASE_BOTH;            IsFakingDeath = false;            if (me->GetVictim())                AttackStart(me->GetVictim());            ResurrectSelfTimer = 0;            ResurrectTimer = 1000;        } else ResurrectSelfTimer -= diff;    }    if (!UpdateVictim() || IsFakingDeath)        return;    if (RomuloDead)    {        if (ResurrectTimer <= diff)        {            Creature* Romulo = (ObjectAccessor::GetCreature((*me), RomuloGUID));            if (Romulo && CAST_AI(boss_romulo::boss_romuloAI, Romulo->AI())->IsFakingDeath)            {                Talk(SAY_JULIANNE_RESURRECT);                Resurrect(Romulo);                CAST_AI(boss_romulo::boss_romuloAI, Romulo->AI())->IsFakingDeath = false;                RomuloDead = false;                ResurrectTimer = 10000;            }        } else ResurrectTimer -= diff;    }    if (BlindingPassionTimer <= diff)    {        if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))            DoCast(target, SPELL_BLINDING_PASSION);        BlindingPassionTimer = urand(30000, 45000);    } else BlindingPassionTimer -= diff;    if (DevotionTimer <= diff)    {        DoCast(me, SPELL_DEVOTION);        DevotionTimer = urand(15000, 45000);    } else DevotionTimer -= diff;    if (PowerfulAttractionTimer <= diff)//.........这里部分代码省略.........
开发者ID:Allysia1,项目名称:TrinityCore,代码行数:101,


示例19: 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 (getDifficulty() == RAID_DIFFICULTY_10MAN_NORMAL || getDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL)        {            if (!me->HasAura(SPELL_BONE_STORM_CHANNEL))            {                if (m_uiBoneSpikeGraveyardTimer < uiDiff)                {                    DoScriptText(RAND(SAY_BONESPIKE_1,SAY_BONESPIKE_2,SAY_BONESPIKE_3), me);                    uint32 count = RAID_MODE(1,3,1,3);                     for (uint8 i = 1; i <= count; i++)                    {                        Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 200, true);                        if (pTarget && !pTarget->HasAura(SPELL_BONE_SPIKE_IMPALING))                        {                            Creature* Bone = me->SummonCreature(CREATURE_BONE_SPIKE, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 999999);                            CAST_AI(npc_bone_spikeAI, Bone->AI())->SetPrisoner(pTarget);                            Bone->CastSpell(pTarget, SPELL_BONE_SPIKE_IMPALING, true);                        }                    }                    m_uiBoneSpikeGraveyardTimer = 15000;                } else m_uiBoneSpikeGraveyardTimer -= uiDiff;                if (m_uiColdFlameTimer <= uiDiff)                {                    me->SummonCreature(CREATURE_COLD_FLAME, me->GetPositionX()+20, me->GetPositionY()+20, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 8000);                    me->SummonCreature(CREATURE_COLD_FLAME, me->GetPositionX()-20, me->GetPositionY()-20, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 8000);                    me->SummonCreature(CREATURE_COLD_FLAME, me->GetPositionX()+20, me->GetPositionY()-20, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 8000);                    me->SummonCreature(CREATURE_COLD_FLAME, me->GetPositionX()-20, me->GetPositionY()+20, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 8000);                    m_uiColdFlameTimer = 15000;                } else m_uiColdFlameTimer -= uiDiff;            }        }        if (getDifficulty() == RAID_DIFFICULTY_10MAN_HEROIC || getDifficulty() == RAID_DIFFICULTY_25MAN_HEROIC)        {            if (m_uiBoneSpikeGraveyardTimer < uiDiff)            {                DoScriptText(RAND(SAY_BONESPIKE_1,SAY_BONESPIKE_2,SAY_BONESPIKE_3), me);                uint32 count = RAID_MODE(1,3,1,3);                for (uint8 i = 1; i <= count; i++)                {                    Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 200, true);                    if (pTarget && !pTarget->HasAura(SPELL_BONE_SPIKE_IMPALING))                    {                        Creature* Bone = me->SummonCreature(CREATURE_BONE_SPIKE, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 999999);                        CAST_AI(npc_bone_spikeAI, Bone->AI())->SetPrisoner(pTarget);                        Bone->CastSpell(pTarget, SPELL_BONE_SPIKE_IMPALING, true);                    }                }                m_uiBoneSpikeGraveyardTimer = 15000;            } else m_uiBoneSpikeGraveyardTimer -= uiDiff;        }        if (!me->HasAura(SPELL_BONE_STORM_CHANNEL))        {            if (m_uiBoneStormChanelTimer <= uiDiff)            {                DoCast(SPELL_BONE_STORM_CHANNEL);                DoScriptText(SAY_BONE_STORM, me);                m_uiBoneStormChanelTimer = 45000;            } else m_uiBoneStormChanelTimer -= uiDiff;            if (m_uiSaberSlashTimer <= uiDiff)            {                Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);                DoCast(pTarget, RAID_MODE(SPELL_SABER_SLASH_10_NORMAL,SPELL_SABER_SLASH_25_NORMAL,SPELL_SABER_SLASH_10_HEROIC,SPELL_SABER_SLASH_10_HEROIC));                m_uiSaberSlashTimer = 6000;            } else m_uiSaberSlashTimer -= uiDiff;        }        if (me->HasAura(SPELL_BONE_STORM_CHANNEL))        {            if (m_uiBoneStormTimer <= uiDiff)            {                DoCastAOE(RAID_MODE(SPELL_BONE_STORM_10_NORMAL,SPELL_BONE_STORM_25_NORMAL,SPELL_BONE_STORM_10_HEROIC,SPELL_BONE_STORM_25_HEROIC));                m_uiBoneStormTimer = 1500;            } else m_uiBoneStormTimer -= uiDiff;            if (m_uiBoneStormRemoveTimer <= uiDiff)            {                me->RemoveAurasDueToSpell(SPELL_BONE_STORM_CHANNEL);                m_uiBoneStormRemoveTimer = 20000;            } else m_uiBoneStormRemoveTimer -= uiDiff;        }        DoMeleeAttackIfReady();    }
开发者ID:ice74,项目名称:PhantomCore,代码行数:99,


示例20: DoCast

void boss_julianne::boss_julianneAI::DamageTaken(Unit* /*done_by*/, uint32 &damage){    if (damage < me->GetHealth())        return;    //anything below only used if incoming damage will kill    if (Phase == PHASE_JULIANNE)    {        damage = 0;        //this means already drinking, so return        if (IsFakingDeath)            return;        me->InterruptNonMeleeSpells(true);        DoCast(me, SPELL_DRINK_POISON);        IsFakingDeath = true;        //IS THIS USEFULL? Creature* Julianne = (ObjectAccessor::GetCreature((*me), JulianneGUID));        return;    }    if (Phase == PHASE_ROMULO)    {        TC_LOG_ERROR("scripts", "boss_julianneAI: cannot take damage in PHASE_ROMULO, why was i here?");        damage = 0;        return;    }    if (Phase == PHASE_BOTH)    {        //if this is true then we have to kill romulo too        if (RomuloDead)        {            if (Creature* Romulo = (ObjectAccessor::GetCreature((*me), RomuloGUID)))            {                Romulo->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);                Romulo->GetMotionMaster()->Clear();                Romulo->setDeathState(JUST_DIED);                Romulo->CombatStop(true);                Romulo->DeleteThreatList();                Romulo->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);            }            return;        }        //if not already returned, then romulo is alive and we can pretend die        if (Creature* Romulo = (ObjectAccessor::GetCreature((*me), RomuloGUID)))        {            PretendToDie(me);            IsFakingDeath = true;            CAST_AI(boss_romulo::boss_romuloAI, Romulo->AI())->ResurrectTimer = 10000;            CAST_AI(boss_romulo::boss_romuloAI, Romulo->AI())->JulianneDead = true;            damage = 0;            return;        }    }    TC_LOG_ERROR("scripts", "boss_julianneAI: DamageTaken reach end of code, that should not happen.");}
开发者ID:Allysia1,项目名称:TrinityCore,代码行数:61,


示例21: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (Intro && !Done)            {                if (AggroTimer <= diff)                {                    me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);                    me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);                    DoScriptText(SAY_AGGRO, me);                    me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);                    Done = true;                    if (AggroTargetGUID)                    {                        Unit* pUnit = Unit::GetUnit((*me), AggroTargetGUID);                        if (pUnit)                            AttackStart(pUnit);                        DoZoneInCombat();                    }                    else                    {                        EnterEvadeMode();                        return;                    }                } else AggroTimer -= diff;            }            if (!UpdateVictim() || !Done)                return;            if (SummonShadowsTimer <= diff)            {                //MindControlGhost();                for (uint8 i = 0; i < 2; ++i)                {                    Creature* Shadow = NULL;                    float X = CalculateRandomLocation(me->GetPositionX(), 10);                    Shadow = me->SummonCreature(CREATURE_SHADOWY_CONSTRUCT, X, me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 0);                    if (Shadow)                    {                        Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1);                        if (!pTarget)                            pTarget = me->getVictim();                        if (pTarget)                            Shadow->AI()->AttackStart(pTarget);                    }                }                SummonShadowsTimer = 60000;            } else SummonShadowsTimer -= diff;            if (SummonDoomBlossomTimer <= diff)            {                if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0))                {                    float X = CalculateRandomLocation(pTarget->GetPositionX(), 20);                    float Y = CalculateRandomLocation(pTarget->GetPositionY(), 20);                    float Z = pTarget->GetPositionZ();                    Z = me->GetMap()->GetHeight(X, Y, Z);                    Creature* DoomBlossom = me->SummonCreature(CREATURE_DOOM_BLOSSOM, X, Y, Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000);                    if (DoomBlossom)                    {                        DoomBlossom->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);                        DoomBlossom->setFaction(me->getFaction());                        DoomBlossom->AddThreat(pTarget, 1.0f);                        CAST_AI(mob_doom_blossom::mob_doom_blossomAI, DoomBlossom->AI())->SetTeronGUID(me->GetGUID());                        pTarget->CombatStart(DoomBlossom);                        SetThreatList(DoomBlossom);                        SummonDoomBlossomTimer = 35000;                    }                }            } else SummonDoomBlossomTimer -= diff;            if (IncinerateTimer <= diff)            {                Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1);                if (!pTarget)                    pTarget = me->getVictim();                if (pTarget)                {                    DoScriptText(RAND(SAY_SPECIAL1,SAY_SPECIAL2), me);                    DoCast(pTarget, SPELL_INCINERATE);                    IncinerateTimer = 20000 + rand()%31 * 1000;                }            } else IncinerateTimer -= diff;            if (CrushingShadowsTimer <= diff)            {                Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0);                if (pTarget && pTarget->isAlive())                    DoCast(pTarget, SPELL_CRUSHING_SHADOWS);                CrushingShadowsTimer = 10000 + rand()%16 * 1000;            } else CrushingShadowsTimer -= diff;            /*** NOTE FOR FUTURE DEV: UNCOMMENT BELOW ONLY IF MIND CONTROL IS FULLY IMPLEMENTED **/            /*if (ShadowOfDeathTimer <= diff)            {                Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1);//.........这里部分代码省略.........
开发者ID:Rochet-2,项目名称:MythCore-OverWoW,代码行数:101,


示例22: HandleExtraEffect

 void HandleExtraEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) {     if(Unit* caster = GetCaster())         if(Creature* creCaster = caster->ToCreature())             CAST_AI(boss_ick::boss_ickAI, creCaster->AI())->_ResetThreat(GetTarget()); }
开发者ID:Naios,项目名称:MythCore,代码行数:6,


示例23: SetMidnight

 void SetMidnight(Creature* pAttumen, uint64 value) {     CAST_AI(boss_attumen::boss_attumenAI, pAttumen->AI())->Midnight = value; }
开发者ID:Krill156,项目名称:FreyaCore,代码行数:4,


示例24: UpdateEscortAI

        void UpdateEscortAI(const uint32 uiDiff)        {            if (uiPhaseTimer <= uiDiff)            {                switch(uiStep)                {                    case 1:                        if (pInstance)                        {                            if (pInstance->GetData(DATA_BRANN_EVENT) != NOT_STARTED)                                return;                            pInstance->SetData(DATA_BRANN_EVENT, IN_PROGRESS);                        }                        bIsBattle = false;                        DoScriptText(SAY_ESCORT_START, me);                        SetRun(true);                        JumpToNextStep(0);                        break;                    case 3:                        SetEscortPaused(false);                        JumpToNextStep(0);                        break;                    case 5:                        if (pInstance)                            if (Creature* pTemp = (Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM))))                                DoScriptText(SAY_EVENT_INTRO_3_ABED, pTemp);                            JumpToNextStep(8500);                        break;                    case 6:                        DoScriptText(SAY_EVENT_A_1, me);                        JumpToNextStep(6500);                        break;                    case 7:                        if (pInstance)                            if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_KADDRAK)))                                DoScriptText(SAY_EVENT_A_2_KADD, pTemp);                            JumpToNextStep(12500);                        break;                    case 8:                        DoScriptText(SAY_EVENT_A_3, me);                        if (pInstance)                            pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_KADDRAK),true);                        if (Creature* pTemp = Unit::GetCreature(*me, uiControllerGUID))                            CAST_AI(mob_tribuna_controller::mob_tribuna_controllerAI, pTemp->AI())->bKaddrakActivated = true;                        JumpToNextStep(5000);                        break;                    case 9:                        me->SetReactState(REACT_PASSIVE);                        SpawnDwarf(1);                        JumpToNextStep(20000);                        break;                    case 10:                        DoScriptText(SAY_EVENT_B_1, me);                        JumpToNextStep(6000);                        break;                    case 11:                        if (pInstance)                            if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_MARNAK)))                                DoScriptText(SAY_EVENT_B_2_MARN, pTemp);                        SpawnDwarf(1);                        JumpToNextStep(20000);                        break;                    case 12:                        DoScriptText(SAY_EVENT_B_3, me);                        if (pInstance)                            pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_MARNAK),true);                        if (Creature* pTemp = Unit::GetCreature(*me, uiControllerGUID))                            CAST_AI(mob_tribuna_controller::mob_tribuna_controllerAI, pTemp->AI())->bMarnakActivated = true;                        JumpToNextStep(10000);                        break;                    case 13:                        SpawnDwarf(1);                        JumpToNextStep(10000);                        break;                    case 14:                        SpawnDwarf(2);                        JumpToNextStep(20000);                        break;                    case 15:                        DoScriptText(SAY_EVENT_C_1, me);                        SpawnDwarf(1);                        JumpToNextStep(10000);                        break;                    case 16:                        SpawnDwarf(2);                        JumpToNextStep(20000);                        break;                    case 17:                        if (pInstance)                            if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM)))                                DoScriptText(SAY_EVENT_C_2_ABED, pTemp);                            SpawnDwarf(1);                        JumpToNextStep(20000);                        break;                    case 18:                        DoScriptText(SAY_EVENT_C_3, me);                        if (pInstance)                            pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_ABEDNEUM),true);                        if (Creature* pTemp = Unit::GetCreature(*me, uiControllerGUID))                            CAST_AI(mob_tribuna_controller::mob_tribuna_controllerAI, pTemp->AI())->bAbedneumActivated = true;//.........这里部分代码省略.........
开发者ID:1024wow,项目名称:TrinityCore,代码行数:101,


示例25: UpdateEscortAI

        void UpdateEscortAI(const uint32 uiDiff)        {            if (uiPhaseTimer <= uiDiff)            {                switch (uiStep)                {                    case 1:                        if (instance)                        {                            if (instance->GetData(DATA_BRANN_EVENT) != NOT_STARTED)                                return;                            instance->SetData(DATA_BRANN_EVENT, IN_PROGRESS);                        }                        bIsBattle = false;                        Talk(SAY_ESCORT_START);                        SetRun(true);                        JumpToNextStep(0);                        break;                    case 3:                        SetEscortPaused(false);                        JumpToNextStep(0);                        break;                    case 5:                        if (instance)                            if (Creature* temp = (Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))))                                temp->AI()->Talk(SAY_EVENT_INTRO_3_ABED);                            JumpToNextStep(8500);                        break;                    case 6:                        Talk(SAY_EVENT_A_1);                        JumpToNextStep(6500);                        break;                    case 7:                        if (instance)                            if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK)))                                temp->AI()->Talk(SAY_EVENT_A_2_KADD);                            JumpToNextStep(12500);                        break;                    case 8:                        Talk(SAY_EVENT_A_3);                        if (instance)                            instance->HandleGameObject(instance->GetData64(DATA_GO_KADDRAK), true);                        if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID))                            CAST_AI(mob_tribuna_controller::mob_tribuna_controllerAI, temp->AI())->bKaddrakActivated = true;                        JumpToNextStep(5000);                        break;                    case 9:                        me->SetReactState(REACT_PASSIVE);                        SpawnDwarf(1);                        JumpToNextStep(20000);                        break;                    case 10:                        Talk(SAY_EVENT_B_1);                        JumpToNextStep(6000);                        break;                    case 11:                        if (instance)                            if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK)))                                temp->AI()->Talk(SAY_EVENT_B_2_MARN);                        SpawnDwarf(1);                        JumpToNextStep(20000);                        break;                    case 12:                        Talk(SAY_EVENT_B_3);                        if (instance)                            instance->HandleGameObject(instance->GetData64(DATA_GO_MARNAK), true);                        if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID))                            CAST_AI(mob_tribuna_controller::mob_tribuna_controllerAI, temp->AI())->bMarnakActivated = true;                        JumpToNextStep(10000);                        break;                    case 13:                        SpawnDwarf(1);                        JumpToNextStep(10000);                        break;                    case 14:                        SpawnDwarf(2);                        JumpToNextStep(20000);                        break;                    case 15:                        Talk(SAY_EVENT_C_1);                        SpawnDwarf(1);                        JumpToNextStep(10000);                        break;                    case 16:                        SpawnDwarf(2);                        JumpToNextStep(20000);                        break;                    case 17:                        if (instance)                            if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))                                temp->AI()->Talk(SAY_EVENT_C_2_ABED);                            SpawnDwarf(1);                        JumpToNextStep(20000);                        break;                    case 18:                        Talk(SAY_EVENT_C_3);                        if (instance)                            instance->HandleGameObject(instance->GetData64(DATA_GO_ABEDNEUM), true);                        if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID))                            CAST_AI(mob_tribuna_controller::mob_tribuna_controllerAI, temp->AI())->bAbedneumActivated = true;//.........这里部分代码省略.........
开发者ID:Angmon,项目名称:TrinityCore,代码行数:101,


示例26: JustDied

 void JustDied(Unit * /*killer*/) {     if (Creature* pAnomalus = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0))         if (pInstance && pInstance->GetData(DATA_ANOMALUS_EVENT) == IN_PROGRESS)             CAST_AI(boss_anomalus::boss_anomalusAI,pAnomalus->AI())->bDeadChaoticRift = true; }
开发者ID:B3NNY,项目名称:TrinityCore,代码行数:6,



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


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