这篇教程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函数代码示例 |