// Wrapper to despawn the Spikes void DoDespawnPursuingSpikes() { if (Creature* pPursuingSpikes = m_creature->GetMap()->GetCreature(m_PursuingSpikesGuid)) pPursuingSpikes->ForcedDespawn(); m_PursuingSpikesGuid.Clear(); }
void Reset() override { m_uiSaluteTimer = 0; m_uiResetTimer = 0; m_playerGuid.Clear(); }
void Reset() override { m_doctorGuid.Clear(); m_pCoord = nullptr; // no select m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); // no regen health m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT); // to make them lay with face down m_creature->SetStandState(UNIT_STAND_STATE_DEAD); switch (m_creature->GetEntry()) { // lower max health case 12923: case 12938: // Injured Soldier m_creature->SetHealth(uint32(m_creature->GetMaxHealth()*.75)); break; case 12924: case 12936: // Badly injured Soldier m_creature->SetHealth(uint32(m_creature->GetMaxHealth()*.50)); break; case 12925: case 12937: // Critically injured Soldier m_creature->SetHealth(uint32(m_creature->GetMaxHealth()*.25)); break; } }
void Reset() override { m_uiPhase = 0; m_uiPhaseTimer = 5000; SetReactState(REACT_AGGRESSIVE); m_playerGuid.Clear(); }
void Reset() override { m_uiAcidBreathTimer = 10000; m_uiNoxiousBreathTimer = 3000; m_uiShadowboltVolleyTimer = 5000; m_uiTyrandeMoveTimer = 0; m_remulosGuid.Clear(); m_tyrandeGuid.Clear(); m_uiHealthCheck = 85; m_uiEventPhase = 0; m_uiEventTimer = 0; // For some reason the boss doesn't move in combat SetCombatMovement(false); }
void SummonedCreatureDespawn(Creature* pSummoned) override { if (pSummoned->GetEntry() == NPC_WINDSOR) { m_windsorGuid.Clear(); m_bIsEventInProgress = false; } }
void Reset() override { m_uiKnockBackTimer = urand(5000, 8000); m_playerGuid.Clear(); if (!m_uiPhase) m_creature->SetStandState(UNIT_STAND_STATE_DEAD); }
void Reset() { m_uiPhase = 0; m_uiPhaseTimer = 5000; m_playerGuid.Clear(); if (m_creature->getFaction() != m_uiNormFaction) m_creature->setFaction(m_uiNormFaction); }
void Reset() { m_creature->SetUInt32Value(UNIT_NPC_FLAGS, m_uiNpcFlags); m_playerGuid.Clear(); m_creepjackGuid.Clear(); m_maloneGuid.Clear(); bEvent = false; bActiveAttack = false; m_uiSayTimer = 1000; m_uiStep = 0; //expect database to have correct faction (1194) and then only unit flags set/remove needed m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE); }
void Reset() override { _Reset(); _armDied = false; _ifLooks = true; _rubbleCount = 0; me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); eyebeamTarget.Clear(); }
void DespawnBoatGhosts(ObjectGuid& CreatureGUID) { // @todo: fire visual after ancestor despawns. if (CreatureGUID) if (Creature* temp = ObjectAccessor::GetCreature(*me, CreatureGUID)) temp->DisappearAndDie(); CreatureGUID.Clear(); }
void UpdateAI(uint32 diff) override { if (!UpdateVictim()) return; DoMeleeAttackIfReady(); if (ChaseTimer <= diff) { if (!IsChasing) { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) { Talk(SAY_WOLF_HOOD); DoCast(target, SPELL_LITTLE_RED_RIDING_HOOD, true); TempThreat = DoGetThreat(target); if (TempThreat) DoModifyThreatPercent(target, -100); HoodGUID = target->GetGUID(); me->AddThreat(target, 1000000.0f); ChaseTimer = 20000; IsChasing = true; } } else { IsChasing = false; if (Unit* target = ObjectAccessor::GetUnit(*me, HoodGUID)) { HoodGUID.Clear(); if (DoGetThreat(target)) DoModifyThreatPercent(target, -100); me->AddThreat(target, TempThreat); TempThreat = 0; } ChaseTimer = 40000; } } else ChaseTimer -= diff; if (IsChasing) return; if (FearTimer <= diff) { DoCastVictim(SPELL_TERRIFYING_HOWL); FearTimer = urand(25000, 35000); } else FearTimer -= diff; if (SwipeTimer <= diff) { DoCastVictim(SPELL_WIDE_SWIPE); SwipeTimer = urand(25000, 30000); } else SwipeTimer -= diff; }
void UpdateAI(const uint32 diff) { if (me->isSpawned() && cleansedGuid) { GameObject* cleansed = me->GetMap()->GetGameObject(cleansedGuid); if (cleansed) cleansed->AddObjectToRemoveList(); cleansedGuid.Clear(); } }
void Reset() override { m_targetGuid.Clear(); m_uiFearTimer = urand(11000, 29000); m_uiRibbonOfSoulsTimer = urand(4000, 8000); m_uiStolenSoulTimer = urand(19000, 31000); m_bHasSummonedAvatar = false; }
void WaypointStart(uint32 uiPointId) { if (uiPointId == 30) { if (GameObject* pBogbeanPlant = m_creature->GetMap()->GetGameObject(m_bogbeanPlantGuid)) pBogbeanPlant->Use(m_creature); m_bogbeanPlantGuid.Clear(); m_creature->HandleEmote(EMOTE_ONESHOT_NONE); } }
void Reset() { if (!HasEscortState(STATE_ESCORT_ESCORTING)) { m_uiSubEvent = 0; m_uiSubEventTimer = 0; m_alleyGuid.Clear(); m_lastDraeneiMachineGuid.Clear(); // Reset fields, that were changed on escort-start m_creature->HandleEmote(EMOTE_STATE_STUN); // Faction is reset with npc_escortAI::JustRespawned(); // Unclear how these flags are set/removed in relation to the faction change at start of escort. // Workaround here, so that the flags are removed during escort (and while not in evade mode) m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE + UNIT_FLAG_PASSIVE); } else m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); }
void Reset() { m_bEvent = false; m_bIsMovingToLunch = false; m_playerGuid.Clear(); m_uiEventTimer = 5000; m_uiEventPhase = 0; if (m_creature->GetEntry() == NPC_KYLE_FRIENDLY) m_creature->UpdateEntry(NPC_KYLE_FRENZIED); }
void Reset() override { m_creature->SetVisibility(VISIBILITY_ON); m_hunterGuid.Clear(); m_uiTemptressKiss_Timer = urand(3000, 6000); m_uiLightingBolt_Timer = urand(3000, 6000); m_uiThreatCheck_Timer = 5000; m_uiSplitCheck_Timer = 7500; }
void Reset() override { if (m_creature->GetEntry() != NPC_VAZRUDEN_HERALD) m_creature->UpdateEntry(NPC_VAZRUDEN_HERALD); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_uiMovementTimer = 0; m_bIsEventInProgress = false; m_bIsDescending = false; m_lastSeenPlayerGuid.Clear(); m_vazrudenGuid.Clear(); m_uiFireballTimer = 0; m_uiConeOfFireTimer = urand(8100, 19700); m_uiBellowingRoarTimer = 100; // TODO Guesswork, though such an AoE fear soon after landing seems fitting // see boss_onyxia // sort of a hack, it is unclear how this really work but the values appear to be valid m_creature->SetByteValue(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_FLY_ANIM); m_creature->SetLevitate(true); }
void Reset() override { Initialize(); Creature* Pet = ObjectAccessor::GetCreature(*me, SummonedPet); if (Pet && Pet->IsAlive()) Pet->DealDamage(Pet, Pet->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); SummonedPet.Clear(); instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); }
void Reset() override { Initialize(); Creature* Pet = ObjectAccessor::GetCreature(*me, SummonedPet); if (Pet && Pet->IsAlive()) Pet->KillSelf(); SummonedPet.Clear(); instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); }
void Despawn() { if (!debuffGUID) return; Unit* debuff = ObjectAccessor::GetUnit(*me, debuffGUID); if (debuff) { debuff->SetVisible(false); debuffGUID.Clear(); } }
void MovementInform(uint32, uint32) override { arrived = true; if (TargetGUID) { if (Unit* target = ObjectAccessor::GetUnit(*me, TargetGUID)) DoCast(target, SPELL_EAGLE_SWOOP, true); TargetGUID.Clear(); me->SetSpeed(MOVE_RUN, 1.2f); EagleSwoop_Timer = urand(5000, 10000); } }
void Reset() override { DoScriptText(SAY_WIPE, m_creature); m_uiOrbitalStrikeTimer = 25000; m_uiShadowWhipTimer = 2000; m_uiAuraTimer = urand(12300, 23300); m_uiDemonicShieldTimer = 1000; m_uiShadowboltTimer = urand(6600, 8900); m_uiSummonTimer = urand(19600, 23100); m_playerGuid.Clear(); m_bCanPullBack = false; }
void Reset() { m_uiDrainLifeTimer = urand(3000, 7000); m_uiDrainManaTimer = m_uiDrainLifeTimer + 5000; m_uiFelExplosionTimer = 2100; m_uiDrainCrystalTimer = urand(10000, 15000); m_uiDrainCrystalTimer = urand(20000, 25000); m_uiEmpowerTimer = 10000; m_bIsDraining = false; m_bDrainingCrystal = false; m_crystalGuid.Clear(); }
void JustDied(Unit* /*killer*/) override { if (!PlayerGUID) return; Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (player && player->GetQuestStatus(10965) == QUEST_STATUS_INCOMPLETE) { player->FailQuest(10965); PlayerGUID.Clear(); Reset(); } }
void Reset() override { m_uiEventTimer = 0; m_uiSadEndTimer = 0; m_uiPhase = 0; m_uiCurrentWave = 0; m_uiKillCounter = 0; m_uiSaveCounter = 0; m_playerGuid.Clear(); m_lSummonedGuidList.clear(); m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); }
void Reset() override { m_playerGuid.Clear(); m_bIsHealed = false; m_bCanRun = false; m_uiRunAwayTimer = 5000; m_creature->SetStandState(UNIT_STAND_STATE_KNEEL); // expect database to have RegenHealth=0 m_creature->SetHealth(int(m_creature->GetMaxHealth() * 0.7)); }
void Reset() override { Weak = false; Materialize = false; Drained = false; WeakPercent = 25 + (rand32() % 16); // 25-40 PlayerGUID.Clear(); ManaBurnTimer = 5000 + (rand32() % 3 * 1000); // 5-8 sec cd if (me->GetEntry() == NPC_DRAINED_PHASE_HUNTER_ENTRY) me->UpdateEntry(NPC_PHASE_HUNTER_ENTRY); }
void Reset() { m_uiKnockBackTimer = urand(5000, 8000); m_playerGuid.Clear(); if (!m_uiPhase) { m_creature->setFaction(m_creature->GetCreatureInfo()->faction_A); // TODO: Workaround? till better solution m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE); m_creature->SetStandState(UNIT_STAND_STATE_DEAD); } }