diff options
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/Level3.cpp | 4 | ||||
| -rw-r--r-- | src/game/Spell.cpp | 25 |
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()); |
