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

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

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

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

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

示例1: EnterCombat

 //*** HANDLED FUNCTION *** //Attack Start is called whenever someone hits us. void EnterCombat(Unit* /*who*/) {     //Say some stuff     me->MonsterSay(SAY_AGGRO,LANG_UNIVERSAL,0);     DoPlaySoundToSet(me,8280); }
开发者ID:Dudelzack,项目名称:blizzlikecore,代码行数:8,


示例2: KilledUnit

 void KilledUnit(Unit* /*victim*/) {     me->MonsterYell(SAY_KILL, LANGUAGE_UNIVERSAL, 0);     DoPlaySoundToSet(me, SOUND_KILL); }
开发者ID:Asandru,项目名称:Script-Land,代码行数:5,


示例3: KilledUnit

 void KilledUnit(Unit* /*victim*/) {     if (!(rand()%3))         DoPlaySoundToSet(me, SOUND_SLAY); }
开发者ID:SkyFireArchives,项目名称:SkyFireEMU_406a,代码行数:5,


示例4: UpdateAI

    void UpdateAI(const uint32 diff)    {        if (!UpdateVictim())            return;        if (StormCount)        {            Unit* pTarget = Unit::GetUnit(*me, CloudGUID);            if (!pTarget || !pTarget->isAlive())            {                EnterEvadeMode();                return;            }            else if (Unit* Cyclone = Unit::GetUnit(*me, CycloneGUID))                Cyclone->CastSpell(pTarget, 25160, true); // keep casting or...            if (StormSequenceTimer <= diff)                HandleStormSequence(pTarget);            else                StormSequenceTimer -= diff;            return;        }        if (Enrage_Timer <= diff)        {            me->MonsterYell(SAY_ONENRAGE, LANG_UNIVERSAL, 0);            DoPlaySoundToSet(me, SOUND_ONENRAGE);            DoCast(me, SPELL_BERSERK, true);            Enrage_Timer = 600000;        } else Enrage_Timer -= diff;        if (StaticDisruption_Timer <= diff)        {            Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);            if (!pTarget) pTarget = me->getVictim();            TargetGUID = pTarget->GetGUID();            DoCast(pTarget, SPELL_STATIC_DISRUPTION, false);            me->SetInFront(me->getVictim());            StaticDisruption_Timer = (10+rand()%8)*1000; // < 20s            /*if (float dist = me->IsWithinDist3d(pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 5.0f) dist = 5.0f;            SDisruptAOEVisual_Timer = 1000 + floor(dist / 30 * 1000.0f);*/        } else StaticDisruption_Timer -= diff;        if (GustOfWind_Timer <= diff)        {            Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);            if (!pTarget) pTarget = me->getVictim();            DoCast(pTarget, SPELL_GUST_OF_WIND);            GustOfWind_Timer = (20+rand()%10)*1000; //20 to 30 seconds(bosskillers)        } else GustOfWind_Timer -= diff;        if (CallLighting_Timer <= diff)        {            DoCast(me->getVictim(), SPELL_CALL_LIGHTNING);            CallLighting_Timer = (12 + rand()%5)*1000; //totaly random timer. can't find any info on this        } else CallLighting_Timer -= diff;        if (!isRaining && ElectricalStorm_Timer < 8000 + urand(0,5000))        {            SetWeather(WEATHER_STATE_HEAVY_RAIN, 0.9999f);            isRaining = true;        }        if (ElectricalStorm_Timer <= diff) {            Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 50, true);            if (!pTarget)            {                EnterEvadeMode();                return;            }            pTarget->CastSpell(pTarget, 44007, true);//cloud visual            DoCast(pTarget, SPELL_ELECTRICAL_STORM, false);//storm cyclon + visual            float x,y,z;            pTarget->GetPosition(x,y,z);            if (pTarget)            {                pTarget->SetUnitMovementFlags(MOVEFLAG_LEVITATING);                pTarget->SendMonsterMove(x,y,me->GetPositionZ()+15,0);            }            Unit* Cloud = me->SummonTrigger(x, y, me->GetPositionZ()+16, 0, 15000);            if (Cloud)            {                CloudGUID = Cloud->GetGUID();                Cloud->SetUnitMovementFlags(MOVEFLAG_LEVITATING);                Cloud->StopMoving();                Cloud->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.0f);                Cloud->setFaction(35);                Cloud->SetMaxHealth(9999999);                Cloud->SetHealth(9999999);                Cloud->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);            }            ElectricalStorm_Timer = 60000; //60 seconds(bosskillers)            StormCount = 1;            StormSequenceTimer = 0;        } else ElectricalStorm_Timer -= diff;        if (SummonEagles_Timer <= diff)        {//.........这里部分代码省略.........
开发者ID:FirstCore,项目名称:Battle_2.4.3,代码行数:101,


示例5: UpdateAI

    void UpdateAI(const uint32 diff)    {        if (waitTimer)        {            if (inMove)            {                if (waitTimer <= diff)                {                    (*me).GetMotionMaster()->MovementExpired();                    (*me).GetMotionMaster()->MovePoint(MovePhase,NalorakkWay[MovePhase][0],NalorakkWay[MovePhase][1],NalorakkWay[MovePhase][2]);                    waitTimer = 0;                } else waitTimer -= diff;            }        }        if (!UpdateVictim())            return;        if (Berserk_Timer <= diff)        {            DoCast(me, SPELL_BERSERK, true);            me->MonsterYell(YELL_BERSERK, LANG_UNIVERSAL, 0);            DoPlaySoundToSet(me, SOUND_YELL_BERSERK);            Berserk_Timer = 600000;        } else Berserk_Timer -= diff;        if (ShapeShift_Timer <= diff)        {            if (inBearForm)            {                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY + 1, 5122);                me->MonsterYell(YELL_SHIFTEDTOTROLL, LANG_UNIVERSAL, 0);                DoPlaySoundToSet(me, SOUND_YELL_TOTROLL);                me->RemoveAurasDueToSpell(SPELL_BEARFORM);                Surge_Timer = 15000 + rand()%5000;                BrutalSwipe_Timer = 7000 + rand()%5000;                Mangle_Timer = 10000 + rand()%5000;                ShapeShift_Timer = 45000 + rand()%5000;                inBearForm = false;            }            else            {                me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY + 1, 0);                me->MonsterYell(YELL_SHIFTEDTOBEAR, LANG_UNIVERSAL, 0);                DoPlaySoundToSet(me, SOUND_YELL_TOBEAR);                DoCast(me, SPELL_BEARFORM, true);                LaceratingSlash_Timer = 2000; // dur 18s                RendFlesh_Timer = 3000;  // dur 5s                DeafeningRoar_Timer = 5000 + rand()%5000;  // dur 2s                ShapeShift_Timer = 20000 + rand()%5000; // dur 30s                inBearForm = true;            }        } else ShapeShift_Timer -= diff;        if (!inBearForm)        {            if (BrutalSwipe_Timer <= diff)            {                DoCast(me->getVictim(), SPELL_BRUTALSWIPE);                BrutalSwipe_Timer = 7000 + rand()%5000;            } else BrutalSwipe_Timer -= diff;            if (Mangle_Timer <= diff)            {                if (me->getVictim() && !me->getVictim()->HasAura(SPELL_MANGLEEFFECT, 0))                {                    DoCast(me->getVictim(), SPELL_MANGLE);                    Mangle_Timer = 1000;                }                else Mangle_Timer = 10000 + rand()%5000;            } else Mangle_Timer -= diff;            if (Surge_Timer <= diff)            {                me->MonsterYell(YELL_SURGE, LANG_UNIVERSAL, 0);                DoPlaySoundToSet(me, SOUND_YELL_SURGE);                Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 45, true);                if (pTarget)                    DoCast(pTarget, SPELL_SURGE);                Surge_Timer = 15000 + rand()%5000;            } else Surge_Timer -= diff;        }        else        {            if (LaceratingSlash_Timer <= diff)            {                DoCast(me->getVictim(), SPELL_LACERATINGSLASH);                LaceratingSlash_Timer = 18000 + rand()%5000;            } else LaceratingSlash_Timer -= diff;            if (RendFlesh_Timer <= diff)            {                DoCast(me->getVictim(), SPELL_RENDFLESH);                RendFlesh_Timer = 5000 + rand()%5000;            } else RendFlesh_Timer -= diff;            if (DeafeningRoar_Timer <= diff)            {                DoCast(me->getVictim(), SPELL_DEAFENINGROAR);                DeafeningRoar_Timer = 15000 + rand()%5000;//.........这里部分代码省略.........
开发者ID:ahuraa,项目名称:blizzlikecore,代码行数:101,


示例6: UpdateAI

    void UpdateAI(const uint32 diff)    {        if (!TankGUID)        {            if (!UpdateVictim())                return;            if (me->GetHealth() < health_20 * (4 - Phase))                EnterPhase(Phase + 1);        }        if (Berserk_Timer <= diff)        {            DoCast(me, SPELL_BERSERK, true);            me->MonsterYell(YELL_BERSERK, LANG_UNIVERSAL, 0);            DoPlaySoundToSet(me, SOUND_BERSERK);            Berserk_Timer = 60000;        }        else Berserk_Timer -= diff;        switch (Phase)        {        case 0:            if (Intro_Timer)            {                if (Intro_Timer <= diff)                {                    me->MonsterYell(YELL_AGGRO, LANG_UNIVERSAL, 0);                    DoPlaySoundToSet(me, SOUND_AGGRO);                    Intro_Timer = 0;                }                else Intro_Timer -= diff;            }            if (Whirlwind_Timer <= diff)            {                DoCast(me, SPELL_WHIRLWIND);                Whirlwind_Timer = 15000 + rand() % 5000;            }            else Whirlwind_Timer -= diff;            if (Grievous_Throw_Timer <= diff)            {                if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))                    DoCast(pTarget, SPELL_GRIEVOUS_THROW, false);                Grievous_Throw_Timer = 10000;            }            else Grievous_Throw_Timer -= diff;            break;        case 1:            if (Creeping_Paralysis_Timer <= diff)            {                DoCast(me, SPELL_CREEPING_PARALYSIS);                Creeping_Paralysis_Timer = 20000;            }            else Creeping_Paralysis_Timer -= diff;            if (Overpower_Timer <= diff)            {                // implemented in DoMeleeAttackIfReady()                Overpower_Timer = 0;            }            else Overpower_Timer -= diff;            break;        case 2:            return;        case 3:            if (Claw_Rage_Timer <= diff)            {                if (!TankGUID)                {                    if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))                    {                        TankGUID = me->GetVictim()->GetGUID();                        me->SetSpeed(MOVE_RUN, 5.0f);                        AttackStart(pTarget); // change victim                        Claw_Rage_Timer = 0;                        Claw_Loop_Timer = 500;                        Claw_Counter = 0;                    }                }                else if (!Claw_Rage_Timer) // do not do this when Lynx_Rush                {                    if (Claw_Loop_Timer <= diff)                    {                        Unit* pTarget = me->GetVictim();                        if (!pTarget || !pTarget->isTargetableForAttack()) pTarget = Unit::GetUnit(*me, TankGUID);                        if (!pTarget || !pTarget->isTargetableForAttack()) pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);                        if (pTarget)                        {                            AttackStart(pTarget);                            if (me->IsWithinMeleeRange(pTarget))                            {                                DoCast(pTarget, SPELL_CLAW_RAGE_DAMAGE, true);                                ++Claw_Counter;                                if (Claw_Counter == 12)                                {//.........这里部分代码省略.........
开发者ID:Phentora,项目名称:OregonCore,代码行数:101,


示例7: JustDied

 void JustDied(Unit* Killer) {     DoPlaySoundToSet(m_creature, SOUND_DEATH); }
开发者ID:Aion,项目名称:EK-SD2,代码行数:4,


示例8: UpdateAI

    void UpdateAI(const uint32 diff)    {        if (!m_creature->SelectHostilTarget() || !m_creature->getVictim() )            return;        if(m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 11)        {            Enraged = true;        }        if(!Enraged)        {            //used for check, when Vexallus cast adds 85%, 70%, 55%, 40%, 25%            if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < (100-(SpawnAddInterval*(AlreadySpawnedAmount+1))))            {                DoYell(SAY_ENERGY, LANG_UNIVERSAL, NULL);                DoPlaySoundToSet(m_creature, SOUND_ENERGY);                Creature* PureEnergyCreature = NULL;                PureEnergyCreature = DoSpawnCreature(CREATURE_PURE_ENERGY, 10, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                Unit* target = NULL;                target = SelectUnit(SELECT_TARGET_RANDOM, 0);                if (PureEnergyCreature && target)                    PureEnergyCreature->AI()->AttackStart(target);                if(Heroic)                                  // *Heroic mode only - he summons two instead of one.                {                    PureEnergyCreature = DoSpawnCreature(CREATURE_PURE_ENERGY, -10, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);                    target = SelectUnit(SELECT_TARGET_RANDOM, 0);                    if (PureEnergyCreature && target)                        PureEnergyCreature->AI()->AttackStart(target);                }                ++AlreadySpawnedAmount;            };            if(ChainLightningTimer < diff)            {                Unit* target = NULL;                target = SelectUnit(SELECT_TARGET_RANDOM, 0);                DoCast(target, SPELL_CHAIN_LIGHTNING);                ChainLightningTimer = 10000;            }else ChainLightningTimer -= diff;            if(ArcaneShockTimer < diff)            {                Unit* target = NULL;                target = SelectUnit(SELECT_TARGET_RANDOM, 0);                DoCast(target, SPELL_ARCANE_SHOCK);                ArcaneShockTimer = 8000;            }else ArcaneShockTimer -= diff;        }else        {            if(OverloadTimer < diff)            {                Unit* target = NULL;                target = SelectUnit(SELECT_TARGET_RANDOM, 0);                DoCast(target, SPELL_OVERLOAD);                OverloadTimer = 2200;            }else OverloadTimer -= diff;        }        DoMeleeAttackIfReady();    }
开发者ID:megamage,项目名称:mangos,代码行数:62,


示例9: KilledUnit

 void KilledUnit(Unit *victim) {     DoYell(SAY_KILL, LANG_UNIVERSAL, NULL);     DoPlaySoundToSet(victim, SOUND_KILL); }
开发者ID:megamage,项目名称:mangos,代码行数:5,


示例10: UpdateAI

    void UpdateAI(const uint32 diff)    {		if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())            return;        if(m_uiEnrageTimer < diff)        {			DoCastSpellIfCan(m_creature, SPELL_ENRAGE, true);            m_uiEnrageTimer = 30000;        }m_uiEnrageTimer -= diff;         if(!m_bIsFlyPhase) //ground phase         {            if(m_uiFlyPhaseTimer < diff) // fly phase start            {				//Go Fly				m_creature->GetMap()->CreatureRelocation(m_creature, 1469, 596, m_creature->GetPositionZ()+20, m_creature->GetOrientation());     				m_creature->StopMoving();                m_creature->GetMotionMaster()->Clear();                m_creature->GetMotionMaster()->MoveIdle();				//FlyPhase Timers Start				m_uiLandPhaseTimer			= 80000;                m_uiDemonicVaporTimer       = 2000;                m_uiFogOfCorruptionTimer    = 20000;				m_uiFogTimer				= 500;                m_uiMaxBreathCount			= 0;                m_uiFogCount				= 0;				m_uiCycle					= 0;                m_bIsFlyPhase				= true;				m_bToStartPos				= false;				m_bToLineStartPos			= false;				m_bFlyOver					= false;				m_bFog						= false;				m_bNextCycle				= false;								return;            }else m_uiFlyPhaseTimer -= diff;             if(m_uiCorrosionTimer < diff)            {                DoScriptText(YELL_CORROSION, m_creature);                if(m_creature->getVictim())					DoCastSpellIfCan(m_creature->getVictim(), SPELL_CORROSION);                m_uiCorrosionTimer = 72000;            }else m_uiCorrosionTimer -= diff;             if(m_uiNoxiousFumesTimer < diff && !m_bIsCastedNoxiousFumes)            {                DoScriptText(YELL_NOXIOUSFUMES, m_creature);                DoPlaySoundToSet(m_creature, 12478);				DoCastSpellIfCan(m_creature, SPELL_NOXIOUSFUMES_AURA);                m_bIsCastedNoxiousFumes = true;            }else m_uiNoxiousFumesTimer -= diff;             if(m_uiGasNovaTimer < diff)            {				DoCastSpellIfCan(m_creature, SPELL_GASNOVA);                m_uiGasNovaTimer = 35000;            }else m_uiGasNovaTimer -= diff;            if(m_uiEncapsulateTimer < diff)            {                if(Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))                {                    m_uiEncapsulateGUID = target->GetGUID();                    DoCastSpellIfCan(target, SPELL_ENCAPSULATE_CHANNEL);                }                m_uiEncapsulateTimer = 30000;            }else m_uiEncapsulateTimer -= diff;             if(m_uiCleaveTimer < diff)            {                DoScriptText(YELL_CLEAVE, m_creature);                if(m_creature->getVictim())					DoCastSpellIfCan(m_creature->getVictim(), SPELL_CLEAVE);                m_uiCleaveTimer = 28000;            }else m_uiCleaveTimer -= diff;            DoMeleeAttackIfReady();        }        else  // fly phase        {			if(m_uiLandPhaseTimer < diff) //fly phase -> ground phase            {                m_creature->GetMap()->CreatureRelocation(m_creature, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ()-20, m_creature->GetOrientation());                m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());                m_uiFlyPhaseTimer       = 60000;                m_bIsFlyPhase           = false;                m_uiCorrosionTimer      = 20000;                m_uiCleaveTimer         = 10000;                m_uiEncapsulateTimer    = 10000;                m_uiGasNovaTimer        = 15000;				m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);//.........这里部分代码省略.........
开发者ID:Infinity-MaNGOS-Project-FallenAngelX,项目名称:infinity_mangos,代码行数:101,


示例11: UpdateAI

    //*** HANDLED FUNCTION ***    //Update AI is called Every single map update (roughly once every 100ms if a player is within the grid)    void UpdateAI(const uint32 diff)    {        //Out of combat timers        if (!me->getVictim())        {            //Random Say timer            if (Say_Timer <= diff)            {                //Random switch between 5 outcomes                switch (rand()%5)                {                    case 0:                        me->MonsterYell(SAY_RANDOM_0,LANG_UNIVERSAL,0);                        DoPlaySoundToSet(me,8831);  //8831 is the index of the sound we are playing. You find these numbers in SoundEntries.dbc                        break;                    case 1:                        me->MonsterYell(SAY_RANDOM_1,LANG_UNIVERSAL,0);                        DoPlaySoundToSet(me,8818);                        break;                    case 2:                        me->MonsterYell(SAY_RANDOM_2,LANG_UNIVERSAL,0);                        DoPlaySoundToSet(me,8041);                        break;                    case 3:                        me->MonsterYell(SAY_RANDOM_3,LANG_UNIVERSAL,0);                        DoPlaySoundToSet(me,8581);                        break;                    case 4:                        me->MonsterYell(SAY_RANDOM_4,LANG_UNIVERSAL,0);                        DoPlaySoundToSet(me,8791);                        break;                }                Say_Timer = 45000;                          //Say something agian in 45 seconds            } else Say_Timer -= diff;            //Rebuff timer            if (Rebuff_Timer <= diff)            {                DoCast(me,SPELL_BUFF);                Rebuff_Timer = 900000;                      //Rebuff agian in 15 minutes            } else Rebuff_Timer -= diff;        }        //Return since we have no target        if (!UpdateVictim())            return;        //Spell 1 timer        if (Spell_1_Timer <= diff)        {            //Cast spell one on our current target.            if (rand()%50 > 10)                DoCast(me->getVictim(),SPELL_ONE_ALT);            else if (me->GetDistance(me->getVictim()) < 25)                DoCast(me->getVictim(),SPELL_ONE);            Spell_1_Timer = 5000;        } else Spell_1_Timer -= diff;        //Spell 2 timer        if (Spell_2_Timer <= diff)        {            //Cast spell one on our current target.            DoCast(me->getVictim(),SPELL_TWO);            Spell_2_Timer = 37000;        } else Spell_2_Timer -= diff;        //Spell 3 timer        if (Phase > 1)        {            if (Spell_3_Timer <= diff)            {                //Cast spell one on our current target.                DoCast(me->getVictim(),SPELL_THREE);                Spell_3_Timer = 19000;            } else Spell_3_Timer -= diff;        }        //Beserk timer        if (Phase > 1)        {            if (Beserk_Timer <= diff)            {                //Say our line then cast uber death spell                DoPlaySoundToSet(me,8588);                me->MonsterYell(SAY_BESERK,LANG_UNIVERSAL,me->getVictim()->GetGUID());                DoCast(me->getVictim(),SPELL_BESERK);                //Cast our beserk spell agian in 12 seconds if we didn't kill everyone                Beserk_Timer = 12000;            } else Beserk_Timer -= diff;//.........这里部分代码省略.........
开发者ID:Dudelzack,项目名称:blizzlikecore,代码行数:101,


示例12: JustDied

 void JustDied(Unit* Killer) {     me->MonsterYell(SAY_DEATH,LANG_UNIVERSAL,NULL);     DoPlaySoundToSet(me, SOUND_DEATH); }
开发者ID:Amara1231,项目名称:blizzlikecore,代码行数:5,


示例13: UpdateAI

    void UpdateAI(const uint32 diff)    {        if (!UpdateVictim())            return;        if (ResetTimer <= diff)        {            if (me->IsWithinDist3d(119.223f, 1035.45f, 29.4481f, 10))            {                EnterEvadeMode();                return;            }            ResetTimer = 5000;        } else ResetTimer -= diff;        if (CheckAddState_Timer <= diff)        {            for (uint8 i = 0; i < 4; ++i)                if (Creature *pTemp = Unit::GetCreature(*me, AddGUID[i]))                    if (pTemp->isAlive() && !pTemp->getVictim())                        pTemp->AI()->AttackStart(me->getVictim());            CheckAddState_Timer = 5000;        } else CheckAddState_Timer -= diff;        if (DrainPower_Timer <= diff)        {            DoCast(me, SPELL_DRAIN_POWER, true);            Map *map = me->GetMap();            if (!map->IsDungeon()) return;            Map::PlayerList const &PlayerList = map->GetPlayers();            for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)            {                if (Player* i_pl = i->getSource())                    if (i_pl->isAlive())me->AddAura(44132, me); //+1% Damage for each active player on boss (+ActivePlayer_Stack)            }            //me->AddAura(44132, me);            me->MonsterYell(YELL_DRAIN_POWER, LANG_UNIVERSAL, NULL);            DoPlaySoundToSet(me, SOUND_YELL_DRAIN_POWER);            DrainPower_Timer = urand(40000,55000);    // must cast in 60 sec, or buff/debuff will disappear        } else DrainPower_Timer -= diff;        if (SpiritBolts_Timer <= diff)        {            if (DrainPower_Timer < 12000)    // channel 10 sec                SpiritBolts_Timer = 13000;   // cast drain power first            else            {                DoCast(me, SPELL_SPIRIT_BOLTS, true);                me->MonsterYell(YELL_SPIRIT_BOLTS, LANG_UNIVERSAL, NULL);                DoPlaySoundToSet(me, SOUND_YELL_SPIRIT_BOLTS);                SpiritBolts_Timer = 40000;                SiphonSoul_Timer = 10000;    // ready to drain                PlayerAbility_Timer = 99999;            }        } else SpiritBolts_Timer -= diff;        if (SiphonSoul_Timer <= diff)        {            Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 70, true);            Unit *trigger = DoSpawnCreature(MOB_TEMP_TRIGGER, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 30000);            if (!pTarget || !trigger)            {                EnterEvadeMode();                return;            }            else            {                trigger->SetDisplayId(11686);                trigger->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);                trigger->CastSpell(pTarget, SPELL_SIPHON_SOUL, true);                trigger->GetMotionMaster()->MoveChase(me);                //DoCast(pTarget, SPELL_SIPHON_SOUL, true);                //me->SetUInt64Value(UNIT_FIELD_CHANNEL_OBJECT, pTarget->GetGUID());                //me->SetUInt32Value(UNIT_CHANNEL_SPELL, SPELL_SIPHON_SOUL);                PlayerGUID = pTarget->GetGUID();                PlayerAbility_Timer = urand(8000,10000);                PlayerClass = pTarget->getClass() - 1;                if (PlayerClass == 10)                    PlayerClass = 9; // druid                else if (PlayerClass == 4 && pTarget->HasSpell(15473))                    PlayerClass = 5; // shadow priest                SiphonSoul_Timer = 99999;   // buff lasts 30 sec            }        } else SiphonSoul_Timer -= diff;        if (PlayerAbility_Timer <= diff)        {            //Unit *pTarget = Unit::GetUnit(*me, PlayerGUID);            //if (pTarget && pTarget->isAlive())            //{                UseAbility();                PlayerAbility_Timer = urand(8000,10000);            //}        } else PlayerAbility_Timer -= diff;//.........这里部分代码省略.........
开发者ID:Agustin1010,项目名称:Oregon-Core,代码行数:101,


示例14: EnterCombat

 void EnterCombat(Unit *who) {     DoYell(SAY_AGGRO,LANG_UNIVERSAL,NULL);     DoPlaySoundToSet(m_creature,SOUND_AGGRO); }
开发者ID:ekzobam,项目名称:HGCore,代码行数:5,


示例15: UpdateAI

        void UpdateAI(uint32 diff) override        {            //Only if not incombat check if the event is started            if (!me->IsInCombat() && instance->GetData(DATA_KARATHRESSEVENT))            {                if (Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_KARATHRESSEVENT_STARTER)))                {                    AttackStart(target);                    GetAdvisors();                }            }            //Return since we have no target            if (!UpdateVictim())                return;            //someone evaded!            if (!instance->GetData(DATA_KARATHRESSEVENT))            {                EnterEvadeMode();                return;            }            //CataclysmicBolt_Timer            if (CataclysmicBolt_Timer <= diff)            {                //select a random unit other than the main tank                Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1);                //if there aren't other units, cast on the tank                if (!target)                    target = me->GetVictim();                if (target)                    DoCast(target, SPELL_CATACLYSMIC_BOLT);                CataclysmicBolt_Timer = 10000;            } else CataclysmicBolt_Timer -= diff;            //SearNova_Timer            if (SearNova_Timer <= diff)            {                DoCastVictim(SPELL_SEAR_NOVA);                SearNova_Timer = 20000 + rand32() % 40000;            } else SearNova_Timer -= diff;            //Enrage_Timer            if (Enrage_Timer <= diff)            {                DoCast(me, SPELL_ENRAGE);                Enrage_Timer = 90000;            } else Enrage_Timer -= diff;            //Blessing of Tides Trigger            if (!HealthAbovePct(75) && !BlessingOfTides)            {                BlessingOfTides = true;                bool continueTriggering = false;                for (uint8 i = 0; i < MAX_ADVISORS; ++i)                    if (Advisors[i])                    {                        Creature* advisor = ObjectAccessor::GetCreature(*me, Advisors[i]);                        if (advisor && advisor->IsAlive())                        {                            continueTriggering = true;                            break;                        }                    }                if (continueTriggering)                {                    DoCast(me, SPELL_BLESSING_OF_THE_TIDES);                    me->Yell(SAY_GAIN_BLESSING_OF_TIDES, LANG_UNIVERSAL);                    DoPlaySoundToSet(me, SOUND_GAIN_BLESSING_OF_TIDES);                }            }            DoMeleeAttackIfReady();        }
开发者ID:Refuge89,项目名称:TrinityCore,代码行数:77,


示例16: MoveInLineOfSight

    void MoveInLineOfSight(Unit* who)    {        if (!MoveEvent)        {            ScriptedAI::MoveInLineOfSight(who);        }        else        {            if (me->IsHostileTo(who))            {                if (!inMove)                {                    switch (MovePhase)                    {                        case 0:                            if (me->IsWithinDistInMap(who, 50))                            {                                me->MonsterYell(YELL_NALORAKK_WAVE1, LANG_UNIVERSAL, 0);                                DoPlaySoundToSet(me, SOUND_NALORAKK_WAVE1);                                (*me).GetMotionMaster()->MovePoint(1,NalorakkWay[1][0],NalorakkWay[1][1],NalorakkWay[1][2]);                                MovePhase ++;                                inMove = true;                                SendAttacker(who);                            }                            break;                        case 2:                            if (me->IsWithinDistInMap(who, 40))                            {                                me->MonsterYell(YELL_NALORAKK_WAVE2, LANG_UNIVERSAL, 0);                                DoPlaySoundToSet(me, SOUND_NALORAKK_WAVE2);                                (*me).GetMotionMaster()->MovePoint(3,NalorakkWay[3][0],NalorakkWay[3][1],NalorakkWay[3][2]);                                MovePhase ++;                                inMove = true;                                SendAttacker(who);                            }                            break;                        case 5:                            if (me->IsWithinDistInMap(who, 40))                            {                                me->MonsterYell(YELL_NALORAKK_WAVE3, LANG_UNIVERSAL, 0);                                DoPlaySoundToSet(me, SOUND_NALORAKK_WAVE3);                                (*me).GetMotionMaster()->MovePoint(6,NalorakkWay[6][0],NalorakkWay[6][1],NalorakkWay[6][2]);                                MovePhase ++;                                inMove = true;                                SendAttacker(who);                            }                            break;                        case 7:                            if (me->IsWithinDistInMap(who, 50))                            {                                SendAttacker(who);                                me->MonsterYell(YELL_NALORAKK_WAVE4, LANG_UNIVERSAL, 0);                                DoPlaySoundToSet(me, SOUND_NALORAKK_WAVE4);                                me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);                                me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);                                MoveEvent = false;                            }                            break;                    }                }            }        }    }
开发者ID:ahuraa,项目名称:blizzlikecore,代码行数:72,


示例17: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (IsEvent)            {                //Must update npc_escortAI                npc_escortAI::UpdateAI(diff);                if (!pGo)                {                    pGo = true;                    if (pInstance)                    {                        AddWaypoint(0, 5492.91f,    -2404.61f,    1462.63f);                        AddWaypoint(1, 5531.76f,    -2460.87f,    1469.55f);                        AddWaypoint(2, 5554.58f,    -2514.66f,    1476.12f);                        AddWaypoint(3, 5554.16f,    -2567.23f,    1479.90f);                        AddWaypoint(4, 5540.67f,    -2625.99f,    1480.89f);                        AddWaypoint(5, 5508.16f,    -2659.2f,    1480.15f);                        AddWaypoint(6, 5489.62f,    -2704.05f,    1482.18f);                        AddWaypoint(7, 5457.04f,    -2726.26f,    1485.10f);                        Start(false, true);                        SetDespawnAtEnd(false);                    }                }            }            //Return since we have no target            if (!UpdateVictim())                return;            if (CleaveTimer <= diff)            {                DoCast(me, SPELL_CLEAVE);                CleaveTimer = 6000+rand()%15000;            } else CleaveTimer -= diff;            if (WarStompTimer <= diff)            {                DoCast(me, SPELL_WARSTOMP);                WarStompTimer = 60000;            } else WarStompTimer -= diff;            if (me->HasAura(SPELL_MARK))                me->RemoveAurasDueToSpell(SPELL_MARK);            if (MarkTimer <= diff)            {                //cast dummy, useful for bos addons                me->CastCustomSpell(me, SPELL_MARK, NULL, NULL, NULL, false, NULL, NULL, me->GetGUID());                std::list<HostileReference *> t_list = me->getThreatManager().getThreatList();                for (std::list<HostileReference *>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)                {                    Unit* pTarget = Unit::GetUnit(*me, (*itr)->getUnitGuid());                    if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER && pTarget->getPowerType() == POWER_MANA)                    {                        pTarget->CastSpell(pTarget, SPELL_MARK, true);//only cast on mana users                    }                }                MarkTimerBase -= 5000;                if (MarkTimerBase < 5500)                    MarkTimerBase = 5500;                MarkTimer = MarkTimerBase;                switch (urand(0, 2))                {                    case 0:                        DoPlaySoundToSet(me, SOUND_MARK1);                        me->MonsterYell(SAY_MARK1, LANG_UNIVERSAL, 0);                        break;                    case 1:                        DoPlaySoundToSet(me, SOUND_MARK2);                        me->MonsterYell(SAY_MARK2, LANG_UNIVERSAL, 0);                        break;                }            } else MarkTimer -= diff;            DoMeleeAttackIfReady();        }
开发者ID:Bootz,项目名称:OpenStage-Project,代码行数:76,


示例18: JustDied

 void JustDied(Unit* /*killer*/) {     _JustDied();     DoPlaySoundToSet(me, SOUND_DEATH);     me->CastSpell(me, SPELL_HOPELESS, true); // TODO: this may affect other creatures }
开发者ID:SkyFireArchives,项目名称:SkyFireEMU_406a,代码行数:6,


示例19: UpdateAI

             void UpdateAI(uint32 diff)            {                if (!UpdateVictim())                    return;                if (BerserkTimer <= diff)                {                    me->MonsterYell(YELL_BERSERK, LANG_UNIVERSAL, 0);                    DoPlaySoundToSet(me, SOUND_BERSERK);                    DoCast(me, SPELL_BERSERK, true);                    BerserkTimer = 60000;                } else BerserkTimer -= diff;                if (Phase == PHASE_LYNX || Phase == PHASE_ENRAGE)                {                    if (SaberlashTimer <= diff)                    {                        // A tank with more than 490 defense skills should receive no critical hit                        //DoCast(me, 41296, true);                        DoCast(me->getVictim(), SPELL_SABER_LASH, true);                        //me->RemoveAurasDueToSpell(41296);                        SaberlashTimer = 30000;                    } else SaberlashTimer -= diff;                    if (FrenzyTimer <= diff)                    {                        DoCast(me, SPELL_FRENZY);                        FrenzyTimer = urand(10000, 15000);                    } else FrenzyTimer -= diff;                    if (Phase == PHASE_LYNX)                    {                        if (CheckTimer <= diff)                        {                            if (HealthBelowPct(25 * (3 - TransformCount)))                                EnterPhase(PHASE_SPLIT);                            CheckTimer = 1000;                        } else CheckTimer -= diff;                    }                }                if (Phase == PHASE_HUMAN || Phase == PHASE_ENRAGE)                {                    if (TotemTimer <= diff)                    {                        DoCast(me, SPELL_SUMMON_TOTEM);                        TotemTimer = 20000;                    } else TotemTimer -= diff;                    if (ShockTimer <= diff)                    {                        if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))                        {                            if (target->IsNonMeleeSpellCasted(false))                                DoCast(target, SPELL_EARTHSHOCK);                            else                                DoCast(target, SPELL_FLAMESHOCK);                            ShockTimer = urand(10000, 15000);                        }                    } else ShockTimer -= diff;                    if (Phase == PHASE_HUMAN)                    {                        if (CheckTimer <= diff)                        {                            if (!HealthAbovePct(20) /*HealthBelowPct(10)*/)                                EnterPhase(PHASE_MERGE);                            else                            {                                Unit* Lynx = Unit::GetUnit(*me, LynxGUID);                                if (Lynx && !Lynx->HealthAbovePct(20) /*Lynx->HealthBelowPct(10)*/)                                    EnterPhase(PHASE_MERGE);                            }                            CheckTimer = 1000;                        } else CheckTimer -= diff;                    }                }                if (Phase == PHASE_MERGE)                {                    if (CheckTimer <= diff)                    {                        Unit* Lynx = Unit::GetUnit(*me, LynxGUID);                        if (Lynx)                        {                            Lynx->GetMotionMaster()->MoveFollow(me, 0, 0);                            me->GetMotionMaster()->MoveFollow(Lynx, 0, 0);                            if (me->IsWithinDistInMap(Lynx, 6.0f))                            {                                if (TransformCount < 3)                                    EnterPhase(PHASE_LYNX);                                else                                    EnterPhase(PHASE_ENRAGE);                            }                        }                        CheckTimer = 1000;                    } else CheckTimer -= diff;                }                DoMeleeAttackIfReady();//.........这里部分代码省略.........
开发者ID:Carbinfibre,项目名称:Script-Land,代码行数:101,


示例20: UpdateAI

    void UpdateAI(const uint32 diff)    {        if (IsEvent)        {            //Must update npc_escortAI            npc_escortAI::UpdateAI(diff);            if (!pGo)            {                pGo = true;                if (pInstance)                {                    AddWaypoint(0, 4896.08f,    -1576.35f,    1333.65f);                    AddWaypoint(1, 4898.68f,    -1615.02f,    1329.48f);                    AddWaypoint(2, 4907.12f,    -1667.08f,    1321.00f);                    AddWaypoint(3, 4963.18f,    -1699.35f,    1340.51f);                    AddWaypoint(4, 4989.16f,    -1716.67f,    1335.74f);                    AddWaypoint(5, 5026.27f,    -1736.89f,    1323.02f);                    AddWaypoint(6, 5037.77f,    -1770.56f,    1324.36f);                    AddWaypoint(7, 5067.23f,    -1789.95f,    1321.17f);                    Start(false, true);                    SetDespawnAtEnd(false);                }            }        }        //Return since we have no target        if (!UpdateVictim())            return;        if (SwarmTimer <= diff)        {            if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))                DoCast(pTarget, SPELL_CARRION_SWARM);            SwarmTimer = urand(45000,60000);            switch (urand(0,1))            {                case 0:                    DoPlaySoundToSet(me, SOUND_SWARM1);                    me->MonsterYell(SAY_SWARM1, LANG_UNIVERSAL, 0);                    break;                case 1:                    DoPlaySoundToSet(me, SOUND_SWARM2);                    me->MonsterYell(SAY_SWARM2, LANG_UNIVERSAL, 0);                    break;            }        } else SwarmTimer -= diff;        if (SleepTimer <= diff)        {            for (uint8 i = 0; i < 3; ++i)            {                if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))                    pTarget->CastSpell(pTarget,SPELL_SLEEP,true);            }            SleepTimer = 60000;            switch (urand(0,1))            {                case 0:                    DoPlaySoundToSet(me, SOUND_SLEEP1);                    me->MonsterYell(SAY_SLEEP1, LANG_UNIVERSAL, 0);                    break;                case 1:                    DoPlaySoundToSet(me, SOUND_SLEEP2);                    me->MonsterYell(SAY_SLEEP2, LANG_UNIVERSAL, 0);                    break;            }        } else SleepTimer -= diff;        if (AuraTimer <= diff)        {            DoCast(me, SPELL_VAMPIRIC_AURA, true);            AuraTimer = urand(10000,20000);        } else AuraTimer -= diff;        if (InfernoTimer <= diff)        {            DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_INFERNO);            InfernoTimer = 45000;            switch (urand(0,1))            {                case 0:                    DoPlaySoundToSet(me, SOUND_INFERNO1);                    me->MonsterYell(SAY_INFERNO1, LANG_UNIVERSAL, 0);                    break;                case 1:                    DoPlaySoundToSet(me, SOUND_INFERNO2);                    me->MonsterYell(SAY_INFERNO2, LANG_UNIVERSAL, 0);                    break;            }        } else InfernoTimer -= diff;        DoMeleeAttackIfReady();    }
开发者ID:Agustin1010,项目名称:Oregon-Core,代码行数:92,


示例21: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (IsEvent)            {                //Must update npc_escortAI                npc_escortAI::UpdateAI(diff);                if (!pGo)                {                    pGo = true;                    if (pInstance)                    {                        AddWaypoint(0, 4896.08f,    -1576.35f,    1333.65f);                        AddWaypoint(1, 4898.68f,    -1615.02f,    1329.48f);                        AddWaypoint(2, 4907.12f,    -1667.08f,    1321.00f);                        AddWaypoint(3, 4963.18f,    -1699.35f,    1340.51f);                        AddWaypoint(4, 4989.16f,    -1716.67f,    1335.74f);                        AddWaypoint(5, 5026.27f,    -1736.89f,    1323.02f);                        AddWaypoint(6, 5037.77f,    -1770.56f,    1324.36f);                        AddWaypoint(7, 5067.23f,    -1789.95f,    1321.17f);                        Start(false, true);                        SetDespawnAtEnd(false);                    }                }            }            //Return since we have no target            if (!UpdateVictim())                return;            if (FrostArmorTimer <= diff)            {                DoCast(me, SPELL_FROST_ARMOR);                FrostArmorTimer = 40000+rand()%20000;            } else FrostArmorTimer -= diff;            if (DecayTimer <= diff)            {                DoCast(me->getVictim(), SPELL_DEATH_AND_DECAY);                DecayTimer = 60000+rand()%20000;                switch (urand(0, 1))                {                    case 0:                        DoPlaySoundToSet(me, SOUND_DECAY1);                        me->MonsterYell(SAY_DECAY1, LANG_UNIVERSAL, NULL);                        break;                    case 1:                        DoPlaySoundToSet(me, SOUND_DECAY2);                        me->MonsterYell(SAY_DECAY2, LANG_UNIVERSAL, NULL);                        break;                }            } else DecayTimer -= diff;            if (NovaTimer <= diff)            {                DoCast(me->getVictim(), SPELL_FROST_NOVA);                NovaTimer = 30000+rand()%15000;                switch (urand(0, 1))                {                    case 0:                        DoPlaySoundToSet(me, SOUND_NOVA1);                        me->MonsterYell(SAY_NOVA1, LANG_UNIVERSAL, NULL);                        break;                    case 1:                        DoPlaySoundToSet(me, SOUND_NOVA2);                        me->MonsterYell(SAY_NOVA2, LANG_UNIVERSAL, NULL);                        break;                }            } else NovaTimer -= diff;            if (IceboltTimer <= diff)            {                DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 40, true), SPELL_ICEBOLT);                IceboltTimer = 11000+rand()%20000;            } else IceboltTimer -= diff;            DoMeleeAttackIfReady();        }
开发者ID:SkyFireArchives,项目名称:SkyFireEMU_420,代码行数:74,


示例22: UpdateAI

    void UpdateAI(const uint32 diff)    {               if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())                return;                if(EnrageTimer < diff)        {            m_creature->CastSpell(m_creature, ENRAGE, true);            EnrageTimer = 60000;        }else EnrageTimer -= diff;                if(Phase1)        {            m_creature->StopMoving();            m_creature->GetMotionMaster()->Clear();            m_creature->GetMotionMaster()->MoveIdle();            if((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 42)            {                m_creature->SetDisplayId(23428);                m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());                DoPlaySoundToSet(m_creature, SOUND_CHANGE_PHASE);                DoCast(m_creature, ENTROPIUS_EFFECT, true);                TargetsCount = 1;                TargetsCountTimer = 10000;                SingularityTimer = 50000;                Phase1 = false;            }            if(NegativeEnergyTimer < diff)            {                for(uint8 i=0; i<2; ++i)                {                    if(Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))                        m_creature->CastSpell(target, SPELL_NEGATIVE, false);                }                NegativeEnergyTimer = 1000;            }else NegativeEnergyTimer -= diff;            //Spawns Shadow portals and then one Void Sentinel            if(SummonVoidTimer < diff)            {                //Shadow Portals not implemented yet :X                uint8 x = rand()%5;                Creature* VoidSentinel = m_creature->SummonCreature(ID_VOID_SENTINEL, ShadowPortalSpawn[x][0], ShadowPortalSpawn[x][1], m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);                if(VoidSentinel)                     VoidSentinel->AI()->AttackStart(m_creature->getVictim());                                SummonVoidTimer = 30000;            }else SummonVoidTimer -= diff;                        //Summon 6 humanoids every 1min (1mage & 2berserkers)            if(SummonTrashTimer < diff)            {                    for(uint8 i = 0; i < 6; i++)                    {                        uint32 ID;                        if((i == 1) | (i == 2))                            ID = ID_SWB;                        else                            ID = ID_SWM;                        Creature* sTrash = m_creature->SummonCreature(ID, Trash[i][0], Trash[i][1], m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);                                                if (Unit* sTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))                            if(sTrash)                                sTrash->AI()->AttackStart(sTarget);                    }                    SummonTrashTimer = 60000;            }else SummonTrashTimer -= diff;        }        else // else Entropius phase        {                        // +1 target every 10 seconds            if(TargetsCountTimer < diff)            {                ++TargetsCount;                TargetsCountTimer = 10000;            }else TargetsCountTimer -= diff;            //Utrudnienie -> chain negative energy nie dziala wiec sa 3 beamy full dmg            if(NegativeEnergyTimer < diff)            {                for(uint8 i=0; i<TargetsCount; ++i)                {                    if(Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))                        m_creature->CastSpell(target, SPELL_NEGATIVE, false);                }                NegativeEnergyTimer = 1000;            }else NegativeEnergyTimer -= diff;            //Summon Singularity            if(SingularityTimer < diff)            {                if(Unit* sTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))                {                    Creature* Singularity = m_creature->SummonCreature(ID_SINGULARITY, sTarget->GetPositionX(), sTarget->GetPositionY(), sTarget->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN, 20000);//.........这里部分代码省略.........
开发者ID:Infinity-MaNGOS-Project-FallenAngelX,项目名称:infinity_mangos,代码行数:101,


示例23: UpdateAI

            void UpdateAI(const uint32 Diff)            {                if (!instance)                    return;                // we're still doing awaken animation                if (bWakingUp && iAwakenTimer >= 0)                {                    iAwakenTimer -= Diff;                    return;        // dont do anything until we are done                } else if (bWakingUp && iAwakenTimer <= 0)                {                    bWakingUp = false;                    AttackStart(Unit::GetUnit(*me, instance->GetData64(0)));                    return;     // dont want to continue until we finish the AttackStart method                }                //Return since we have no target                if (!UpdateVictim())                    return;                // wake a wall minion                if (WallMinionTimer <= Diff)                {                    instance->SetData (DATA_MINIONS, IN_PROGRESS);                    WallMinionTimer = 10000;                } else WallMinionTimer -= Diff;                //If we are <66 summon the guardians                if (!bGuardiansAwake && !HealthAbovePct(66))                {                    ActivateMinion(instance->GetData64(5), true);   // EarthenGuardian1                    ActivateMinion(instance->GetData64(6), true);   // EarthenGuardian2                    ActivateMinion(instance->GetData64(7), true);   // EarthenGuardian3                    ActivateMinion(instance->GetData64(8), true);   // EarthenGuardian4                    ActivateMinion(instance->GetData64(9), true);   // EarthenGuardian5                    ActivateMinion(instance->GetData64(10), false); // EarthenGuardian6                    me->MonsterYell(SAY_SUMMON, LANGUAGE_UNIVERSAL, 0);                    DoPlaySoundToSet(me, SOUND_SUMMON);                    bGuardiansAwake = true;                }                //If we are <33 summon the vault walkers                if (!bVaultWalkersAwake && !HealthAbovePct(33))                {                    ActivateMinion(instance->GetData64(1), true);    // VaultWalker1                    ActivateMinion(instance->GetData64(2), true);    // VaultWalker2                    ActivateMinion(instance->GetData64(3), true);    // VaultWalker3                    ActivateMinion(instance->GetData64(4), false);    // VaultWalker4                    me->MonsterYell(SAY_SUMMON2, LANGUAGE_UNIVERSAL, 0);                    DoPlaySoundToSet(me, SOUND_SUMMON2);                    bVaultWalkersAwake = true;                }                if (TremorTimer <= Diff)                {                    //Cast                    DoCast(me->getVictim(), SPELL_GROUND_TREMOR);                    //45 seconds until we should cast this agian                    TremorTimer  = 45000;                } else TremorTimer  -= Diff;                DoMeleeAttackIfReady();            }
开发者ID:Asandru,项目名称:Script-Land,代码行数:65,



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


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