aboutsummaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authormegamage <none@none>2009-06-07 11:59:12 -0500
committermegamage <none@none>2009-06-07 11:59:12 -0500
commit79b76f10cd7a0b5e299b7e0ff3d01cdd727b893d (patch)
treec1ec074e433a61b335c25342c6a1fad8827d1f4a /src/game
parentc48c20cb9866d22f1b03159ae258310ab10a9263 (diff)
parent2e4fae75a4f4f24dc2c97b8bde4870974c073aa9 (diff)
*Merge. A m_casttime check is added to prevent redundent check of canseeordetect.
--HG-- branch : trunk
Diffstat (limited to 'src/game')
-rw-r--r--src/game/Level3.cpp4
-rw-r--r--src/game/Spell.cpp25
2 files changed, 22 insertions, 7 deletions
diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp
index bc0e3b8f80f..06338bbe233 100644
--- a/src/game/Level3.cpp
+++ b/src/game/Level3.cpp
@@ -122,6 +122,9 @@ bool ChatHandler::HandleAHBotOptionsCommand(const char* args)
}
else if (strncmp(opt,"maxitems",l) == 0)
{
+ PSendSysMessage("ahbotoptions mintime has been deprecated");
+ return false;
+ /*
char * param1 = strtok(NULL, " ");
if ((!ahMapIdStr) || (!param1))
{
@@ -129,6 +132,7 @@ bool ChatHandler::HandleAHBotOptionsCommand(const char* args)
return false;
}
AuctionHouseBotCommands(2, ahMapID, NULL, param1);
+ */
}
else if (strncmp(opt,"mintime",l) == 0)
{
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 4b410480ebe..8ca1dc6f82a 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -2555,18 +2555,29 @@ void Spell::cancel()
void Spell::cast(bool skipCheck)
{
- SetExecutedCurrently(true);
-
// update pointers base at GUIDs to prevent access to non-existed already object
UpdatePointers();
- // cancel at lost main target unit
- if(!m_targets.getUnitTarget() && m_targets.getUnitTargetGUID() && m_targets.getUnitTargetGUID() != m_caster->GetGUID())
+ if(m_targets.getUnitTarget())
{
- cancel();
- SetExecutedCurrently(false);
- return;
+ // three check: prepare, cast (m_casttime > 0), hit (delayed)
+ if(m_casttime && m_targets.getUnitTarget()->isAlive() && !m_caster->canSeeOrDetect(m_targets.getUnitTarget(), true)))
+ {
+ cancel();
+ return;
+ }
}
+ else
+ {
+ // cancel at lost main target unit
+ if(m_targets.getUnitTargetGUID() && m_targets.getUnitTargetGUID() != m_caster->GetGUID())
+ {
+ cancel();
+ return;
+ }
+ }
+
+ SetExecutedCurrently(true);
if(m_caster->GetTypeId() != TYPEID_PLAYER && m_targets.getUnitTarget() && m_targets.getUnitTarget() != m_caster)
m_caster->SetInFront(m_targets.getUnitTarget());