void UpdateAI(const uint32 diff) { if (!UpdateVictim()) return; //ShadowVolley_Timer if (ShadowVolley_Timer < diff) { DoCast(m_creature->getVictim(),SPELL_SHADOWBOLTVOLLEY); ShadowVolley_Timer = 15000; } else ShadowVolley_Timer -= diff; //BoneShield_Timer if (BoneShield_Timer < diff) { DoCast(m_creature->getVictim(),SPELL_BONESHIELD); BoneShield_Timer = 45000; } else BoneShield_Timer -= diff; //Minion_Timer if (Minion_Timer < diff) { //Cast SummonMinion(m_creature->getVictim()); SummonMinion(m_creature->getVictim()); SummonMinion(m_creature->getVictim()); SummonMinion(m_creature->getVictim()); Minion_Timer = 12000; } else Minion_Timer -= diff; //Summon 2 Bone Mages if (!Mages && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 26) { //Cast SummonMages(m_creature->getVictim()); SummonMages(m_creature->getVictim()); Mages = true; } DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 diff) { if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; //ShadowVolley_Timer if (ShadowVolley_Timer < diff) { DoCastSpellIfCan(m_creature->getVictim(),SPELL_SHADOWBOLTVOLLEY); ShadowVolley_Timer = 15000; }else ShadowVolley_Timer -= diff; //BoneShield_Timer if (BoneShield_Timer < diff) { DoCastSpellIfCan(m_creature->getVictim(),SPELL_BONESHIELD); BoneShield_Timer = 45000; }else BoneShield_Timer -= diff; //Minion_Timer if (Minion_Timer < diff) { //Cast SummonMinion(m_creature->getVictim()); SummonMinion(m_creature->getVictim()); SummonMinion(m_creature->getVictim()); SummonMinion(m_creature->getVictim()); Minion_Timer = 12000; }else Minion_Timer -= diff; //Summon 2 Bone Mages if (!Mages && m_creature->GetHealthPercent() < 26.0f) { //Cast SummonMages(m_creature->getVictim()); SummonMages(m_creature->getVictim()); Mages = true; } DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 diff) { if (!UpdateVictim()) return; if (AppearDelay) { me->StopMoving(); me->AttackStop(); if (AppearDelay_Timer <= diff) { AppearDelay = false; if (Phase == 2) { me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetVisible(false); } AppearDelay_Timer = 2000; } else AppearDelay_Timer -= diff; } if (Phase == 1) { if (BlindingLight_Timer <= diff) { BlindingLight = true; BlindingLight_Timer = 45000; } else BlindingLight_Timer -= diff; if (Wrath_Timer <= diff) { me->InterruptNonMeleeSpells(false); if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true)) DoCast(target, SPELL_WRATH_OF_THE_ASTROMANCER, true); Wrath_Timer = 20000+rand()%5000; } else Wrath_Timer -= diff; if (ArcaneMissiles_Timer <= diff) { if (BlindingLight) { DoCast(me->getVictim(), SPELL_BLINDING_LIGHT); BlindingLight = false; } else { Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); if (!me->HasInArc(2.5f, target)) target = me->getVictim(); if (target) DoCast(target, SPELL_ARCANE_MISSILES); } ArcaneMissiles_Timer = 3000; } else ArcaneMissiles_Timer -= diff; if (m_uiWrathOfTheAstromancer_Timer <= diff) { me->InterruptNonMeleeSpells(false); //Target the tank ? if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) { if (target->GetTypeId() == TYPEID_PLAYER) { DoCast(target, SPELL_WRATH_OF_THE_ASTROMANCER); m_uiWrathOfTheAstromancer_Timer = 25000; } else m_uiWrathOfTheAstromancer_Timer = 1000; } } else m_uiWrathOfTheAstromancer_Timer -= diff; //Phase1_Timer if (Phase1_Timer <= diff) { Phase = 2; Phase1_Timer = 50000; //After these 50 seconds she portals to the middle of the room and disappears, leaving 3 light portals behind. me->GetMotionMaster()->Clear(); me->SetPosition(CENTER_X, CENTER_Y, CENTER_Z, CENTER_O); for (uint8 i=0; i <= 2; ++i) { if (!i) { Portals[i][0] = Portal_X(SMALL_PORTAL_RADIUS); Portals[i][1] = Portal_Y(Portals[i][0], SMALL_PORTAL_RADIUS); Portals[i][2] = CENTER_Z; } else { Portals[i][0] = Portal_X(LARGE_PORTAL_RADIUS); Portals[i][1] = Portal_Y(Portals[i][0], LARGE_PORTAL_RADIUS); Portals[i][2] = PORTAL_Z; } } if ((abs(Portals[2][0] - Portals[1][0]) < 7) && (abs(Portals[2][1] - Portals[1][1]) < 7)) { int i=1; if (abs(CENTER_X + 26.0f - Portals[2][0]) < 7) i = -1; Portals[2][0] = Portals[2][0]+7*i; Portals[2][1] = Portal_Y(Portals[2][0], LARGE_PORTAL_RADIUS); } for (int i=0; i <= 2; ++i) { if (Creature* Summoned = me->SummonCreature(NPC_ASTROMANCER_SOLARIAN_SPOTLIGHT, Portals[i][0], Portals[i][1], Portals[i][2], CENTER_O, TEMPSUMMON_TIMED_DESPAWN, Phase2_Timer+Phase3_Timer+AppearDelay_Timer+1700)) { Summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); Summoned->CastSpell(Summoned, SPELL_SPOTLIGHT, false); } } AppearDelay = true; } else Phase1_Timer-=diff; } else if (Phase == 2) { //10 seconds after Solarian disappears, 12 mobs spawn out of the three portals. me->AttackStop(); me->StopMoving(); if (Phase2_Timer <= diff) { Phase = 3; for (int i=0; i <= 2; ++i) for (int j=1; j <= 4; j++) SummonMinion(NPC_SOLARIUM_AGENT, Portals[i][0], Portals[i][1], Portals[i][2]); DoScriptText(SAY_SUMMON1, me); Phase2_Timer = 10000; } else Phase2_Timer -= diff; } else if (Phase == 3) { me->AttackStop(); me->StopMoving(); //Check Phase3_Timer if (Phase3_Timer <= diff) { Phase = 1; //15 seconds later Solarian reappears out of one of the 3 portals. Simultaneously, 2 healers appear in the two other portals. int i = rand()%3; me->GetMotionMaster()->Clear(); me->SetPosition(Portals[i][0], Portals[i][1], Portals[i][2], CENTER_O); for (int j=0; j <= 2; j++) if (j != i) SummonMinion(NPC_SOLARIUM_PRIEST, Portals[j][0], Portals[j][1], Portals[j][2]); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetVisible(true); DoScriptText(SAY_SUMMON2, me); AppearDelay = true; Phase3_Timer = 15000; } else Phase3_Timer -= diff; } else if (Phase == 4) { //Fear_Timer if (Fear_Timer <= diff) { DoCast(me, SPELL_FEAR); Fear_Timer = 20000; } else Fear_Timer -= diff; //VoidBolt_Timer if (VoidBolt_Timer <= diff) { DoCast(me->getVictim(), SPELL_VOID_BOLT); VoidBolt_Timer = 10000; } else VoidBolt_Timer -= diff; } //When Solarian reaches 20% she will transform into a huge void walker. if (Phase != 4 && me->HealthBelowPct(20)) { Phase = 4; //To make sure she wont be invisible or not selecatble me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetVisible(true); DoScriptText(SAY_VOIDA, me); DoScriptText(SAY_VOIDB, me); me->SetArmor(WV_ARMOR); me->SetDisplayId(MODEL_VOIDWALKER); me->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize*2.5f); } DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 diff) { //Return since we have no target if (!m_creature->SelectHostilTarget()) return; //Check if we have a current target if( m_creature->getVictim() && m_creature->isAlive()) { //ShadowVolley_Timer if (ShadowVolley_Timer < diff) { //Cast DoCast(m_creature->getVictim(),SPELL_SHADOWBOLTVOLLEY); //15 seconds ShadowVolley_Timer = 15000; }else ShadowVolley_Timer -= diff; //BoneShield_Timer if (BoneShield_Timer < diff) { //Cast DoCast(m_creature->getVictim(),SPELL_BONESHIELD); //45 seconds BoneShield_Timer = 45000; }else BoneShield_Timer -= diff; //Minion_Timer if (Minion_Timer < diff) { //Cast SummonMinion(m_creature->getVictim()); SummonMinion(m_creature->getVictim()); SummonMinion(m_creature->getVictim()); SummonMinion(m_creature->getVictim()); //12 seconds until we should cast this agian Minion_Timer = 12000; }else Minion_Timer -= diff; //Summon 2 Bone Mages if ( !Mages && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 26 ) { //Cast SummonMages(m_creature->getVictim()); SummonMages(m_creature->getVictim()); Mages = true; } //If we are within range melee the target if( m_creature->IsWithinDistInMap(m_creature->getVictim(), ATTACK_DISTANCE)) { //Make sure our attack is ready and we arn't currently casting if( m_creature->isAttackReady() && !m_creature->m_currentSpell) { m_creature->AttackerStateUpdate(m_creature->getVictim()); m_creature->resetAttackTimer(); } } } }
void UpdateAI(const uint32 diff) { if (!m_creature->SelectHostilTarget() || !m_creature->getVictim()) return; if (AppearDelay) { m_creature->StopMoving(); m_creature->AttackStop(); if (AppearDelay_Timer < diff) { AppearDelay = false; if (Phase == 2) { m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetVisibility(VISIBILITY_OFF); } AppearDelay_Timer = 2000; }else AppearDelay_Timer -= diff; } //the jumping of the dot part of the wrath of the astromancer if (WrathTarget) { if (Jump_Timer< diff) { std::list<HostilReference*>& m_threatlist = m_creature->getThreatManager().getThreatList(); bool hasJumped = false; Unit* target = Unit::GetUnit((*m_creature),WrathTarget); if (target && target->isAlive()) { for(std::list<HostilReference*>::iterator iter = m_threatlist.begin();iter!=m_threatlist.end();++iter) { Unit* currentUnit=Unit::GetUnit((*m_creature),(*iter)->getUnitGuid()); if (currentUnit) { if (currentUnit->IsWithinDistInMap(target,MIN_RANGE_FOR_DOT_JUMP)&¤tUnit->isAlive()&¤tUnit!=target) { m_creature->CastSpell(currentUnit,SPELL_MARK_OF_THE_ASTROMANCER, false,0,0,m_creature->GetGUID()); Jump_Timer=8000; WrathTarget=currentUnit->GetGUID(); hasJumped = true; break; } } } } if (!hasJumped) WrathTarget = 0; }else Jump_Timer -= diff; } if (Phase == 1) { //ArcaneMissiles_Timer if (ArcaneMissiles_Timer < diff) { //Solarian casts Arcane Missiles on on random targets in the raid. Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0); if (!m_creature->HasInArc(2.5f, target)) target = m_creature->getVictim(); if (target) DoCast(target, SPELL_ARCANE_MISSILES); ArcaneMissiles_Timer = 3000; }else ArcaneMissiles_Timer -= diff; //MarkOfTheSolarian_Timer if (MarkOfTheSolarian_Timer < diff) { DoCast(m_creature->getVictim(), MARK_OF_SOLARIAN); MarkOfTheSolarian_Timer = 45000; }else MarkOfTheSolarian_Timer -= diff; //MarkOfTheAstromancer_Timer if (MarkOfTheAstromancer_Timer < diff) { //A debuff that lasts for 5 seconds, cast several times each phase on a random raid member, but not the main tank if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1)) { DoCast(target, SPELL_MARK_OF_THE_ASTROMANCER); WrathTarget=target->GetGUID(); Jump_Timer=8000; } MarkOfTheAstromancer_Timer = 15000; }else MarkOfTheAstromancer_Timer -= diff; //BlindingLight_Timer if (BlindingLight_Timer < diff) { //She casts this spell every 45 seconds. It is a kind of Moonfire spell, which she strikes down on the whole raid simultaneously. It hits everyone in the raid for 2280 to 2520 arcane damage. DoCast(m_creature->getVictim(), SPELL_BLINDING_LIGHT); BlindingLight_Timer = 45000; }else BlindingLight_Timer -= diff; //Phase1_Timer if (Phase1_Timer < diff) { Phase = 2; Phase1_Timer = 50000; //After these 50 seconds she portals to the middle of the room and disappears, leaving 3 light portals behind. m_creature->GetMotionMaster()->Clear(); m_creature->Relocate(CENTER_X, CENTER_Y, CENTER_Z, CENTER_O); for(int i=0; i<=2; i++) { if (!i) { Portals[i][0] = Portal_X(SMALL_PORTAL_RADIUS); Portals[i][1] = Portal_Y(Portals[i][0], SMALL_PORTAL_RADIUS); Portals[i][2] = CENTER_Z; } else { Portals[i][0] = Portal_X(LARGE_PORTAL_RADIUS); Portals[i][1] = Portal_Y(Portals[i][0], LARGE_PORTAL_RADIUS); Portals[i][2] = PORTAL_Z; } } if ((abs(int(Portals[2][0]) - int(Portals[1][0])) < 7) && (abs(int(Portals[2][1]) - int(Portals[1][1])) < 7)) { int i=1; if (abs(int(CENTER_X) + int(26.0f) - int(Portals[2][0])) < 7) i = -1; Portals[2][0] = Portals[2][0]+7*i; Portals[2][1] = Portal_Y(Portals[2][0], LARGE_PORTAL_RADIUS); } for (int i=0; i<=2; i++) { Creature* Summoned = m_creature->SummonCreature(ASTROMANCER_SOLARIAN_SPOTLIGHT, Portals[i][0], Portals[i][1], Portals[i][2], CENTER_O, TEMPSUMMON_TIMED_DESPAWN, Phase2_Timer+Phase3_Timer+AppearDelay_Timer+1700); if (Summoned) { Summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); Summoned->CastSpell(Summoned, SPELL_SPOTLIGHT, false); } } AppearDelay = true; }else Phase1_Timer-=diff; } else if (Phase == 2) { m_creature->AttackStop(); m_creature->StopMoving(); //Check Phase2_Timer if (Phase2_Timer < diff) { //10 seconds after Solarian disappears, 12 mobs spawn out of the three portals. Phase = 3; for (int i=0; i<=2; i++) for (int j=1; j<=4; j++) SummonMinion(SOLARIUM_AGENT, Portals[i][0], Portals[i][1], Portals[i][2]); DoScriptText(SAY_SUMMON1, m_creature); Phase2_Timer = 10000; } else Phase2_Timer -= diff; } else if (Phase == 3) { m_creature->AttackStop(); m_creature->StopMoving(); //Check Phase3_Timer if (Phase3_Timer < diff) { Phase = 1; //15 seconds later Solarian reappears out of one of the 3 portals. Simultaneously, 2 healers appear in the two other portals. int i = rand()%3; m_creature->GetMotionMaster()->Clear(); m_creature->Relocate(Portals[i][0], Portals[i][1], Portals[i][2], CENTER_O); for (int j=0; j<=2; j++) if (j!=i) SummonMinion(SOLARIUM_PRIEST, Portals[j][0], Portals[j][1], Portals[j][2]); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetVisibility(VISIBILITY_ON); DoScriptText(SAY_SUMMON2, m_creature); AppearDelay = true; Phase3_Timer = 15000; }else Phase3_Timer -= diff; } else if (Phase == 4) { //Fear_Timer if (Fear_Timer < diff) { DoCast(m_creature->getVictim(), SPELL_FEAR); Fear_Timer = 20000; }else Fear_Timer -= diff; //VoidBolt_Timer if (VoidBolt_Timer < diff) { DoCast(m_creature->getVictim(), SPELL_VOID_BOLT); VoidBolt_Timer = 10000; }else VoidBolt_Timer -= diff; } //When Solarian reaches 20% she will transform into a huge void walker. if (Phase != 4 && ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth())<20)) { Phase = 4; //To make sure she wont be invisible or not selecatble m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetVisibility(VISIBILITY_ON); DoScriptText(SAY_VOIDA, m_creature); DoScriptText(SAY_VOIDB, m_creature); m_creature->SetArmor(WV_ARMOR); m_creature->SetDisplayId(MODEL_VOIDWALKER); m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize*2.5f); } DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 diff) { if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; if (AppearDelay) { m_creature->StopMoving(); m_creature->AttackStop(); if (AppearDelay_Timer < diff) { AppearDelay = false; if (Phase == 2) { m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetVisibility(VISIBILITY_OFF); } AppearDelay_Timer = 2000; }else AppearDelay_Timer -= diff; } if (Phase == 1) { //ArcaneMissiles_Timer if (ArcaneMissiles_Timer < diff) { //Solarian casts Arcane Missiles on on random targets in the raid. if (Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) { if (target && !m_creature->HasInArc(2.5f, target)) target = m_creature->getVictim(); if (target) DoCastSpellIfCan(target, SPELL_ARCANE_MISSILES); } ArcaneMissiles_Timer = 3000; }else ArcaneMissiles_Timer -= diff; //Wrath of the Astromancer targets a random player which will explode after 6 secondes if (m_uiWrathOfTheAstromancer_Timer < diff) { m_creature->InterruptNonMeleeSpells(false); //Target the tank ? if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1)) { if (pTarget->GetTypeId() == TYPEID_PLAYER) { DoCastSpellIfCan(pTarget, SPELL_WRATH_OF_THE_ASTROMANCER); m_uiWrathOfTheAstromancer_Timer = 25000; } else m_uiWrathOfTheAstromancer_Timer = 1000; } }else m_uiWrathOfTheAstromancer_Timer -= diff; //BlindingLight_Timer if (BlindingLight_Timer < diff) { //She casts this spell every 45 seconds. It is a kind of Moonfire spell, which she strikes down on the whole raid simultaneously. It hits everyone in the raid for 2280 to 2520 arcane damage. DoCastSpellIfCan(m_creature->getVictim(), SPELL_BLINDING_LIGHT); BlindingLight_Timer = 45000; }else BlindingLight_Timer -= diff; //Phase1_Timer if (Phase1_Timer < diff) { Phase = 2; Phase1_Timer = 50000; //After these 50 seconds she portals to the middle of the room and disappears, leaving 3 light portals behind. m_creature->GetMotionMaster()->Clear(); m_creature->GetMap()->CreatureRelocation(m_creature, CENTER_X, CENTER_Y, CENTER_Z, CENTER_O); for(int i = 0; i <= 2; ++i) { if (!i) { Portals[i][0] = Portal_X(SMALL_PORTAL_RADIUS); Portals[i][1] = Portal_Y(Portals[i][0], SMALL_PORTAL_RADIUS); Portals[i][2] = CENTER_Z; } else { Portals[i][0] = Portal_X(LARGE_PORTAL_RADIUS); Portals[i][1] = Portal_Y(Portals[i][0], LARGE_PORTAL_RADIUS); Portals[i][2] = PORTAL_Z; } } if ((abs(int(Portals[2][0]) - int(Portals[1][0])) < 7) && (abs(int(Portals[2][1]) - int(Portals[1][1])) < 7)) { int i = 1; if (abs(int(CENTER_X) + int(26.0f) - int(Portals[2][0])) < 7) i = -1; Portals[2][0] = Portals[2][0]+7*i; Portals[2][1] = Portal_Y(Portals[2][0], LARGE_PORTAL_RADIUS); } for (int i = 0; i <= 2; ++i) { if (Creature* Summoned = m_creature->SummonCreature(NPC_ASTROMANCER_SOLARIAN_SPOTLIGHT, Portals[i][0], Portals[i][1], Portals[i][2], CENTER_O, TEMPSUMMON_TIMED_DESPAWN, Phase2_Timer+Phase3_Timer+AppearDelay_Timer+1700)) { Summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); Summoned->CastSpell(Summoned, SPELL_SPOTLIGHT, false); } } AppearDelay = true; }else Phase1_Timer -= diff; } else if (Phase == 2) { m_creature->AttackStop(); m_creature->StopMoving(); //Check Phase2_Timer if (Phase2_Timer < diff) { //10 seconds after Solarian disappears, 12 mobs spawn out of the three portals. Phase = 3; for (int i = 0; i <= 2; ++i) { for (int j = 1; j <= 4; ++j) SummonMinion(NPC_SOLARIUM_AGENT, Portals[i][0], Portals[i][1], Portals[i][2]); } DoScriptText(SAY_SUMMON1, m_creature); Phase2_Timer = 10000; } else Phase2_Timer -= diff; } else if (Phase == 3) { m_creature->AttackStop(); m_creature->StopMoving(); //Check Phase3_Timer if (Phase3_Timer < diff) { Phase = 1; //15 seconds later Solarian reappears out of one of the 3 portals. Simultaneously, 2 healers appear in the two other portals. int i = irand(0, 2); m_creature->GetMotionMaster()->Clear(); m_creature->GetMap()->CreatureRelocation(m_creature, Portals[i][0], Portals[i][1], Portals[i][2], CENTER_O); for (int j = 0; j <= 2; ++j) if (j != i) SummonMinion(NPC_SOLARIUM_PRIEST, Portals[j][0], Portals[j][1], Portals[j][2]); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetVisibility(VISIBILITY_ON); DoScriptText(SAY_SUMMON2, m_creature); AppearDelay = true; Phase3_Timer = 15000; }else Phase3_Timer -= diff; } else if (Phase == 4) { //Fear_Timer if (Fear_Timer < diff) { DoCastSpellIfCan(m_creature, SPELL_FEAR); Fear_Timer = 20000; }else Fear_Timer -= diff; //VoidBolt_Timer if (VoidBolt_Timer < diff) { DoCastSpellIfCan(m_creature->getVictim(), SPELL_VOID_BOLT); VoidBolt_Timer = 10000; }else VoidBolt_Timer -= diff; } //When Solarian reaches 20% she will transform into a huge void walker. if (Phase != 4 && m_creature->GetHealthPercent() < 20.0f) { Phase = 4; //To make sure she wont be invisible or not selecatble m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetVisibility(VISIBILITY_ON); DoScriptText(SAY_VOIDA, m_creature); DoScriptText(SAY_VOIDB, m_creature); m_creature->SetArmor(WV_ARMOR); m_creature->SetDisplayId(MODEL_VOIDWALKER); m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize*2.5f); } DoMeleeAttackIfReady(); }