Description:
in ScheduleAIChange ASSERTION FAILED: !i_disabledAI
Attempt to schedule charm AI change on unit that already has disabled AI
Crash log
https://gist.github.com/HAANAAE/e9c87635f132f3b34bc2fb674a9e94e1
Branch(es): 3.3.5
TC rev. hash/commit: https://github.com/TrinityCore/TrinityCore/commit/606fbc248223953891084430da9f371e25506825
Operating system: debian
#13 0x00000000010fed81 in WorldObject::CastSpell (this=0x7fff3e963000, target=0x7fff48c25240, spellId=37122, args=...) at /home/TrinityCore/src/server/game/Entities/Object/Object.cpp:2825
targets = {m_targetMask = 2, m_objectTarget = 0x7fff48c25240, m_itemTarget = 0x0, m_origObjectTargetGUID = {static Empty = {static Empty = <same as static member of an already seen type>, _guid = 0}, _guid = 0}, m_objectTargetGUID = {static Empty = {static Empty = <same as static member of an already seen type>, _guid = 0}, _guid = 6240}, m_itemTargetGUID = {static Empty = {static Empty = <same as static member of an already seen type>, _guid = 0}, _guid = 0}, m_itemTargetEntry = 0, m_src = {_position = {<Position> = {m_positionX = 0, m_positionY = 0, m_positionZ = 0, m_orientation = 0}, m_mapId = 4294967295}, _transportGUID = {static Empty = {static Empty = <same as static member of an already seen type>, _guid = 0}, _guid = 0}, _transportOffset = {m_positionX = 0, m_positionY = 0, m_positionZ = 0, m_orientation = 0}}, m_dst = {_position = {<Position> = {m_positionX = 0, m_positionY = 0, m_positionZ = 0, m_orientation = 0}, m_mapId = 4294967295}, _transportGUID = {static Empty = {static Empty = <same as static member of an already seen type>, _guid = 0}, _guid = 0}, _transportOffset = {m_positionX = 0, m_positionY = 0, m_positionZ = 0, m_orientation = 0}}, m_elevation = 0, m_speed = 0, m_strTarget = <incomplete type>}
#14 0x0000000000f58156 in SmartScript::ProcessAction (this=0x7fff48a24228, e=..., unit=0x0, var0=0, var1=0, bvar=false, spell=0x0, gob=0x0) at /home/TrinityCore/src/server/game/AI/SmartScripts/SmartScript.cpp:577
triggerFlag = TriggerCastFlags::TRIGGERED_NONE
target = <optimized out>
__range = <optimized out>
__begin = <optimized out>
__end = <optimized out>
targets = std::vector of length 1, capacity 1 = {0x7fff48c25240}
New Crash Log
Entities/Unit/Unit.cpp:9429 in ScheduleAIChange ASSERTION FAILED:
!m_aiLocked
Attempt to schedule AI change during AI update tick
https://gist.github.com/HAANAAE/e28e110b62e89e4b15a7cb07b2c03539
you could apply https://github.com/TrinityCore/TrinityCore/pull/22783 and maybe get some more info about the assert (I should merge it in a few weeks)
Both asserts were triggered in an Instance, the first one in The Eye.
The 2nd assert is about a charmed player casting a spell that removes the charmed aura from himself (no clue how that is possible).
@Treeston could you take a look at this when you have time ?
I wonder if the 1st assert is triggered by charming spell being cast to an already-charmed unit
Could it be that mind controlled player is a mage and charm AI makes it cast Ice Block? (or same with paladin Divine Shield)
Possible Shauren.
Ice Block and Divine Shield are in SpellList of PlayerAI
c744566
Is it intended though for AI to change itself ? Should that issue be taken care of too?
AI does not directly change itself. Spell casts' immediate effects are processed immediately downstack from CastSpell (in AI update), and if doing so causes charm AI to be removed the assert was thrown.
I mean, is it intended for a charmed Player to cast Ice Block and break the charm ? Should Ice Block be removed from the list of available spells or should it somehow not drop the charm ?
Anecdotally, yeah, charm AI can un-charm itself on retail.
Most helpful comment
Could it be that mind controlled player is a mage and charm AI makes it cast Ice Block? (or same with paladin Divine Shield)