From 7422c2b9f6fa35f500ee1b249c64897829fd9e47 Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 1 Jan 2009 23:42:11 -0600 Subject: *Some modifications of FindCreature and FindGameobject functions. --HG-- branch : trunk --- src/bindings/scripts/include/sc_creature.cpp | 57 +++++++--------------------- src/bindings/scripts/include/sc_creature.h | 4 +- 2 files changed, 15 insertions(+), 46 deletions(-) (limited to 'src/bindings/scripts/include') diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp index fad8c631e5e..d46d5b68716 100644 --- a/src/bindings/scripts/include/sc_creature.cpp +++ b/src/bindings/scripts/include/sc_creature.cpp @@ -740,55 +740,24 @@ void ScriptedAI::DoTeleportAll(float x, float y, float z, float o) i_pl->TeleportTo(m_creature->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT); } -Unit* ScriptedAI::FindCreature(uint32 entry, uint32 range, uint32 district) +Unit* ScriptedAI::FindCreature(uint32 entry, float range) { - CellPair pair(Trinity::ComputeCellPair(m_creature->GetPositionX(), m_creature->GetPositionY())); - Cell cell(pair); - cell.data.Part.reserved = district; - cell.SetNoCreate(); - - std::list NPCList; - + Creature* target = NULL; Trinity::AllCreaturesOfEntryInRange check(m_creature, entry, range); - Trinity::CreatureListSearcher searcher(NPCList, check); - TypeContainerVisitor, GridTypeMapContainer> visitor(searcher); - - CellLock cell_lock(cell, pair); - cell_lock->Visit(cell_lock, visitor, *(m_creature->GetMap())); - - if (!NPCList.empty()) - { - for(std::list::iterator itr = NPCList.begin(); itr != NPCList.end(); ++itr) - { - return Creature::GetUnit((*m_creature), (*itr)->GetGUID()); - } - }else error_log("SD2 ERROR: Entry: %u not found!", entry); return NULL; + Trinity::CreatureSearcher searcher(target, check); + m_creature->VisitNearbyGridObject(range, searcher); + if(!target) error_log("SD2 ERROR: Entry: %u not found!", entry); + return target; } -GameObject* ScriptedAI::FindGameObject(uint32 entry, uint32 district) +GameObject* ScriptedAI::FindGameObject(uint32 entry, float range) { - CellPair pair(Trinity::ComputeCellPair(m_creature->GetPositionX(), m_creature->GetPositionY())); - Cell cell(pair); - cell.data.Part.reserved = district; - cell.SetNoCreate(); - - std::list GOList; - - Trinity::AllGameObjectsWithEntryInGrid go_check(entry); - Trinity::GameObjectListSearcher go_search(GOList, go_check); - TypeContainerVisitor - , GridTypeMapContainer> go_visit(go_search); - CellLock cell_lock(cell, pair); - cell_lock->Visit(cell_lock, go_visit, *(m_creature->GetMap())); - - if (!GOList.empty()) - { - for(std::list::iterator itr = GOList.begin(); itr != GOList.end(); ++itr) - { - return (*itr); - } - } - else error_log("SD2 ERROR: GameObject Entry: %u not found!", entry); return NULL; + GameObject* target = NULL; + Trinity::AllGameObjectsWithEntryInGrid go_check(entry); + Trinity::GameObjectSearcher searcher(target, go_check); + m_creature->VisitNearbyGridObject(range, searcher); + if(!target) error_log("SD2 ERROR: Entry: %u not found!", entry); + return target; } Unit* ScriptedAI::DoSelectLowestHpFriendly(float range, uint32 MinHPDiff) diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h index 3ece26bdb6f..9c7ffc022eb 100644 --- a/src/bindings/scripts/include/sc_creature.h +++ b/src/bindings/scripts/include/sc_creature.h @@ -149,10 +149,10 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI void DoTeleportAll(float x, float y, float z, float o); //Get a single creature of given entry - Unit* FindCreature(uint32 entry, uint32 range, uint32 district = ALL_DISTRICT); + Unit* FindCreature(uint32 entry, float range); //Get a single gameobject of given entry - GameObject* FindGameObject(uint32 entry, uint32 district = ALL_DISTRICT); + GameObject* FindGameObject(uint32 entry, float range); //Returns friendly unit with the most amount of hp missing from max hp Unit* DoSelectLowestHpFriendly(float range, uint32 MinHPDiff = 1); -- cgit v1.2.3