rendered paste body void CastSpellOnRandomTarget(uint32 i) { if(_unit->GetCurrentSpell() == NULL && _unit->GetAIInterface()->GetNextTarget()) { Unit* TargetTable[25]; int LastTarget = -1; for (int i = 0; i < 25; i++) { TargetTable[i] = NULL; } for(set<Object*>::iterator itr = _unit->GetInRangeSetBegin(); itr != _unit->GetInRangeSetEnd(); ++itr) { if (isHostile(_unit, (*itr)) && (*itr)->GetTypeId() == TYPEID_PLAYER && (*itr)->GetInstanceID() == _unit->GetInstanceID() && isAttackable(_unit, (*itr)) && (*itr) != _unit) // ((*itr)->GetTypeId()== TYPEID_UNIT || { Unit* RandomTarget = NULL; RandomTarget = (Unit*)(*itr); if (RandomTarget->isAlive() && _unit->GetAIInterface()->getThreatByPtr(RandomTarget) > 0 && _unit->GetDistance2dSq(RandomTarget) <= 900.0f) // 30*30 { LastTarget++; TargetTable[LastTarget] = NULL; TargetTable[LastTarget] = RandomTarget; } } } uint32 CastTarget = RandomUInt(LastTarget+1); switch (spells[i].targettype) { case TARGET_RANDOM_SINGLE: _unit->CastSpell(TargetTable[CastTarget], spells[i].info, spells[i].instant); break; case TARGET_RANDOM_DESTINATION: _unit->CastSpellAoF(TargetTable[CastTarget]->GetPositionX(), TargetTable[CastTarget]->GetPositionY(), TargetTable[CastTarget]->GetPositionZ(), spells[i].info, spells[i].instant); break; } } }