aboutsummaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorXTZGZoReX <none@none>2010-01-29 22:25:09 +0100
committerXTZGZoReX <none@none>2010-01-29 22:25:09 +0100
commit7209312044cf1d8b443ba0a6f2216089e50ff44e (patch)
treef579b4c75b5e38761cf30ce597b339094074a10c /src/game
parentc3ae3b88aa4baa5348d800237e5894d67b583b16 (diff)
parentd140d676999a96cb756665d86309c58c00b4e102 (diff)
* Merge - screw you, Brian!
--HG-- branch : trunk
Diffstat (limited to 'src/game')
-rw-r--r--src/game/Chat.cpp14
-rw-r--r--src/game/ObjectMgr.cpp2
-rw-r--r--src/game/UnitAI.cpp138
3 files changed, 60 insertions, 94 deletions
diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp
index f5e85b467b3..abc047d7ecb 100644
--- a/src/game/Chat.cpp
+++ b/src/game/Chat.cpp
@@ -75,7 +75,7 @@ ChatCommand * ChatHandler::getCommandTable()
static ChatCommand accountCommandTable[] =
{
- { "addon", SEC_PLAYER, false, &ChatHandler::HandleAccountAddonCommand, "", NULL },
+ { "addon", SEC_MODERATOR, false, &ChatHandler::HandleAccountAddonCommand, "", NULL },
{ "create", SEC_CONSOLE, true, &ChatHandler::HandleAccountCreateCommand, "", NULL },
{ "delete", SEC_CONSOLE, true, &ChatHandler::HandleAccountDeleteCommand, "", NULL },
{ "onlinelist", SEC_CONSOLE, true, &ChatHandler::HandleAccountOnlineListCommand, "", NULL },
@@ -384,7 +384,7 @@ ChatCommand * ChatHandler::getCommandTable()
{ "tame", SEC_GAMEMASTER, false, &ChatHandler::HandleNpcTameCommand, "", NULL },
{ "setdeathstate", SEC_GAMEMASTER, false, &ChatHandler::HandleNpcSetDeathStateCommand, "", NULL },
{ "addformation", SEC_MODERATOR, false, &ChatHandler::HandleNpcAddFormationCommand, "", NULL },
- { "setlink", SEC_MODERATOR, false, &ChatHandler::HandleNpcSetLinkCommand, "", NULL },
+ { "setlink", SEC_GAMEMASTER, false, &ChatHandler::HandleNpcSetLinkCommand, "", NULL },
//{ TODO: fix or remove this commands
{ "addweapon", SEC_ADMINISTRATOR, false, &ChatHandler::HandleNpcAddWeaponCommand, "", NULL },
@@ -447,7 +447,7 @@ ChatCommand * ChatHandler::getCommandTable()
{ "creature_ai_summons", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadEventAISummonsCommand, "", NULL },
{ "creature_ai_texts", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadEventAITextsCommand, "", NULL },
{ "creature_involvedrelation", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadCreatureQuestInvRelationsCommand,"",NULL },
- { "creature_linked_respawn", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadCreatureLinkedRespawnCommand, "", NULL },
+ { "creature_linked_respawn", SEC_GAMEMASTER, true, &ChatHandler::HandleReloadCreatureLinkedRespawnCommand, "", NULL },
{ "creature_loot_template", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadLootTemplatesCreatureCommand, "", NULL },
{ "creature_questrelation", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadCreatureQuestRelationsCommand, "", NULL },
//{ "db_script_string", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadDbScriptStringCommand, "", NULL },
@@ -736,15 +736,15 @@ ChatCommand * ChatHandler::getCommandTable()
{ "repairitems", SEC_GAMEMASTER, true, &ChatHandler::HandleRepairitemsCommand, "", NULL },
{ "waterwalk", SEC_GAMEMASTER, false, &ChatHandler::HandleWaterwalkCommand, "", NULL },
- { "freeze", SEC_ADMINISTRATOR, false, &ChatHandler::HandleFreezeCommand, "", NULL },
- { "unfreeze", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUnFreezeCommand, "", NULL },
- { "listfreeze", SEC_ADMINISTRATOR, false, &ChatHandler::HandleListFreezeCommand, "", NULL },
+ { "freeze", SEC_MODERATOR, false, &ChatHandler::HandleFreezeCommand, "", NULL },
+ { "unfreeze", SEC_MODERATOR, false, &ChatHandler::HandleUnFreezeCommand, "", NULL },
+ { "listfreeze", SEC_MODERATOR, false, &ChatHandler::HandleListFreezeCommand, "", NULL },
{ "possess", SEC_ADMINISTRATOR, false, &ChatHandler::HandlePossessCommand, "", NULL },
{ "unpossess", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUnPossessCommand, "", NULL },
{ "bindsight", SEC_ADMINISTRATOR, false, &ChatHandler::HandleBindSightCommand, "", NULL },
{ "unbindsight", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUnbindSightCommand, "", NULL },
- { "playall", SEC_ADMINISTRATOR, false, &ChatHandler::HandlePlayAllCommand, "", NULL },
+ { "playall", SEC_GAMEMASTER, false, &ChatHandler::HandlePlayAllCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index e91aefe4b31..ccac86f9202 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -3988,7 +3988,7 @@ void ObjectMgr::LoadQuests()
}
}
- if(qinfo->RewSpellCast)
+ if(qinfo->RewSpellCast > 0)
{
SpellEntry const* spellInfo = sSpellStore.LookupEntry(qinfo->RewSpellCast);
diff --git a/src/game/UnitAI.cpp b/src/game/UnitAI.cpp
index 1938491060e..cb8335fac04 100644
--- a/src/game/UnitAI.cpp
+++ b/src/game/UnitAI.cpp
@@ -120,69 +120,49 @@ struct TargetDistanceOrder : public std::binary_function<const Unit *, const Uni
Unit* UnitAI::SelectTarget(SelectAggroTarget targetType, uint32 position, float dist, bool playerOnly, int32 aura)
{
- if(targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST)
- {
- std::list<HostilReference*> &m_threatlist = me->getThreatManager().getThreatList();
- if(position >= m_threatlist.size())
- return NULL;
+ const std::list<HostilReference *> &threatlist = me->getThreatManager().getThreatList();
+ std::list<Unit*> targetList;
- std::list<Unit*> targetList;
- for (std::list<HostilReference*>::iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr)
- if(SelectTargetHelper(me, (*itr)->getTarget(), playerOnly, dist, aura))
- targetList.push_back((*itr)->getTarget());
+ if (position >= threatlist.size())
+ return NULL;
- if(position >= targetList.size())
- return NULL;
+ for (std::list<HostilReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
+ if (SelectTargetHelper(me, (*itr)->getTarget(), playerOnly, dist, aura))
+ targetList.push_back((*itr)->getTarget());
+
+ if (position >= targetList.size())
+ return NULL;
+ if (targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST)
targetList.sort(TargetDistanceOrder(me));
- if(targetType == SELECT_TARGET_NEAREST)
- {
- std::list<Unit*>::iterator i = targetList.begin();
- advance(i, position);
- return *i;
- }
- else
- {
- std::list<Unit*>::reverse_iterator i = targetList.rbegin();
- advance(i, position);
- return *i;
- }
- }
- else
+ switch(targetType)
{
- std::list<HostilReference*> m_threatlist = me->getThreatManager().getThreatList();
- std::list<HostilReference*>::iterator i;
- while(position < m_threatlist.size())
- {
- if(targetType == SELECT_TARGET_BOTTOMAGGRO)
+ case SELECT_TARGET_NEAREST:
+ case SELECT_TARGET_TOPAGGRO:
{
- i = m_threatlist.end();
- advance(i, - (int32)position - 1);
+ std::list<Unit*>::iterator itr = targetList.begin();
+ advance(itr, position);
+ return *itr;
}
- else
+ break;
+
+ case SELECT_TARGET_FARTHEST:
+ case SELECT_TARGET_BOTTOMAGGRO:
{
- i = m_threatlist.begin();
- if(targetType == SELECT_TARGET_TOPAGGRO)
- advance(i, position);
- else // random
- {
- //advance(i, position + rand()%(m_threatlist.size() - position));
- //if we use "random, 1", usually we want random except current victim
- advance(i, rand()%m_threatlist.size());
- if(position && (*i)->getTarget() == me->getVictim())
- {
- m_threatlist.erase(i);
- continue;
- }
- }
+ std::list<Unit*>::reverse_iterator ritr = targetList.rbegin();
+ advance(ritr, position);
+ return *ritr;
}
+ break;
- if(SelectTargetHelper(me, (*i)->getTarget(), playerOnly, dist, aura))
- return (*i)->getTarget();
- else
- m_threatlist.erase(i);
- }
+ case SELECT_TARGET_RANDOM:
+ {
+ std::list<Unit*>::iterator itr = targetList.begin();
+ advance(itr, urand(position, targetList.size()-1));
+ return *itr;
+ }
+ break;
}
return NULL;
@@ -190,47 +170,33 @@ Unit* UnitAI::SelectTarget(SelectAggroTarget targetType, uint32 position, float
void UnitAI::SelectTargetList(std::list<Unit*> &targetList, uint32 num, SelectAggroTarget targetType, float dist, bool playerOnly, int32 aura)
{
- if(targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST)
- {
- std::list<HostilReference*> &m_threatlist = me->getThreatManager().getThreatList();
- if(m_threatlist.empty())
- return;
+ const std::list<HostilReference*> &threatlist = me->getThreatManager().getThreatList();
+
+ if (threatlist.empty())
+ return;
- for (std::list<HostilReference*>::iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr)
- if(SelectTargetHelper(me, (*itr)->getTarget(), playerOnly, dist, aura))
- targetList.push_back((*itr)->getTarget());
+ for (std::list<HostilReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
+ if (SelectTargetHelper(me, (*itr)->getTarget(), playerOnly, dist, aura))
+ targetList.push_back((*itr)->getTarget());
+ if (targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST)
+ {
targetList.sort(TargetDistanceOrder(me));
- targetList.resize(num);
- if(targetType == SELECT_TARGET_FARTHEST)
- targetList.reverse();
}
- else
- {
- std::list<HostilReference*> m_threatlist = me->getThreatManager().getThreatList();
- std::list<HostilReference*>::iterator i;
- while(!m_threatlist.empty() && num)
- {
- if(targetType == SELECT_TARGET_BOTTOMAGGRO)
- {
- i = m_threatlist.end();
- --i;
- }
- else
- {
- i = m_threatlist.begin();
- if(targetType == SELECT_TARGET_RANDOM)
- advance(i, rand()%m_threatlist.size());
- }
- if(SelectTargetHelper(me, (*i)->getTarget(), playerOnly, dist, aura))
- {
- targetList.push_back((*i)->getTarget());
- --num;
- }
- m_threatlist.erase(i);
+ if (targetType == SELECT_TARGET_FARTHEST || targetType == SELECT_TARGET_BOTTOMAGGRO)
+ targetList.reverse();
+
+ if (targetType == SELECT_TARGET_RANDOM)
+ {
+ while (num > targetList.size()) {
+ std::list<Unit*>::iterator itr = targetList.begin();
+ advance(itr, urand(0, targetList.size()-1));
+ targetList.erase(itr);
}
}
+ else
+ targetList.resize(num);
}
float UnitAI::DoGetSpellMaxRange(uint32 spellId, bool positive)