From ea68727d27e699200236b3b7ecbe36b7f7061cfc Mon Sep 17 00:00:00 2001 From: megamage Date: Tue, 18 Nov 2008 19:40:06 -0600 Subject: *Merge from Mangos. Add MapReference. Author: hunuza. *Also re-commit the patches reverted in 255. --HG-- branch : trunk --- src/bindings/scripts/include/sc_creature.cpp | 26 +++++++++++++++++++------- src/bindings/scripts/include/sc_creature.h | 1 + 2 files changed, 20 insertions(+), 7 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 1ee90c41029..0c946b8f26d 100644 --- a/src/bindings/scripts/include/sc_creature.cpp +++ b/src/bindings/scripts/include/sc_creature.cpp @@ -679,13 +679,11 @@ void ScriptedAI::DoZoneInCombat(Unit* pUnit) return; } - InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers(); - InstanceMap::PlayerList::const_iterator i; - for (i = PlayerList.begin(); i != PlayerList.end(); ++i) - { - if((*i)->isAlive()) - pUnit->AddThreat(*i, 0.0f); - } + 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()) + pUnit->AddThreat(i_pl, 0.0f); } void ScriptedAI::DoResetThreat() @@ -721,6 +719,20 @@ void ScriptedAI::DoTeleportPlayer(Unit* pUnit, float x, float y, float z, float ((Player*)pUnit)->TeleportTo(pUnit->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT); } +void ScriptedAI::DoTeleportAll(float x, float y, float z, float o) +{ + Map *map = m_creature->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()) + i_pl->TeleportTo(m_creature->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT); +} + + Unit* ScriptedAI::DoSelectLowestHpFriendly(float range, uint32 MinHPDiff) { CellPair p(Trinity::ComputeCellPair(m_creature->GetPositionX(), m_creature->GetPositionY())); diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h index 99ca4672f65..c1d7f06f029 100644 --- a/src/bindings/scripts/include/sc_creature.h +++ b/src/bindings/scripts/include/sc_creature.h @@ -146,6 +146,7 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI //Teleports a player without dropping threat (only teleports to same map) void DoTeleportPlayer(Unit* pUnit, float x, float y, float z, float o); + void DoTeleportAll(float x, float y, float z, float o); //Returns friendly unit with the most amount of hp missing from max hp Unit* DoSelectLowestHpFriendly(float range, uint32 MinHPDiff = 1); -- cgit v1.2.3