aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2008-10-24 17:37:40 -0500
committermegamage <none@none>2008-10-24 17:37:40 -0500
commit0a3057972c78196621196cc68e785ed6d81e75c1 (patch)
tree68cd8927f52f7840de4520e818e89229833925f7 /src
parent67f95a52816be71f1432ae0165fb22ef7733e6ef (diff)
[svn] Fix a crash caused by gruul script.
Change in EffectSummonWild and DoZoneInCombat. --HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/include/sc_creature.cpp7
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp15
-rw-r--r--src/game/SpellEffects.cpp7
4 files changed, 34 insertions, 16 deletions
diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp
index a5401b8100d..ee52817c114 100644
--- a/src/bindings/scripts/include/sc_creature.cpp
+++ b/src/bindings/scripts/include/sc_creature.cpp
@@ -458,18 +458,17 @@ void ScriptedAI::DoZoneInCombat(Unit* pUnit)
return;
}
- if (!pUnit->CanHaveThreatList() || pUnit->getThreatManager().isThreatListEmpty())
+ /*if (!pUnit->CanHaveThreatList() || pUnit->getThreatManager().isThreatListEmpty())
{
error_log("SD2: DoZoneInCombat called for creature that either cannot have threat list or has empty threat list (pUnit entry = %d)", pUnit->GetTypeId() == TYPEID_UNIT ? ((Creature*)pUnit)->GetEntry() : 0);
-
return;
- }
+ }*/
InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
InstanceMap::PlayerList::const_iterator i;
for (i = PlayerList.begin(); i != PlayerList.end(); ++i)
{
- if(!(*i)->isGameMaster())
+ if((*i)->isAlive())
pUnit->AddThreat(*i, 0.0f);
}
}
diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
index 11b97c5913e..87152a249f2 100644
--- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
+++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
@@ -585,7 +585,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
case 1://lift off
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
//m_creature->GetMotionMaster()->Clear(false);
- m_creature->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
+ m_creature->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
//m_creature->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ());
m_creature->StopMoving();
DoYell(SAY_TAKEOFF, LANG_UNIVERSAL, NULL);
@@ -594,9 +594,9 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
break;
case 2://move to center
//m_creature->GetMotionMaster()->Clear(false);
- m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+ //m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
m_creature->GetMotionMaster()->MovePoint(0, CENTER_X + 5, CENTER_Y, CENTER_Z); //+5, for SPELL_THROW_GLAIVE bug
- m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+ //m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
break;
case 3://throw one glaive
@@ -636,15 +636,15 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
Timer[EVENT_FLIGHT_SEQUENCE] = 3000;
break;
case 6://fly to hover point
- m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+ //m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
m_creature->GetMotionMaster()->MovePoint(0, HoverPosition[HoverPoint].x, HoverPosition[HoverPoint].y, HoverPosition[HoverPoint].z);
- m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+ //m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
break;
case 7://return to center
- m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+ //m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
m_creature->GetMotionMaster()->MovePoint(0, CENTER_X, CENTER_Y, CENTER_Z);
- m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+ //m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
break;
case 8://glaive return
@@ -664,7 +664,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
break;
case 9://land
//m_creature->GetMotionMaster()->Clear(false);
- m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
+ m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
//m_creature->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ());
m_creature->StopMoving();
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
@@ -1616,7 +1616,8 @@ struct TRINITY_DLL_DECL boss_maievAI : public ScriptedAI
void UpdateAI(const uint32 diff)
{
- if((!m_creature->SelectHostilTarget() || !m_creature->getVictim()) && !Timer[1])
+ if((!m_creature->SelectHostilTarget() || !m_creature->getVictim())
+ && !Timer[EVENT_MAIEV_STEALTH])
return;
Event = EVENT_MAIEV_NULL;
@@ -2107,7 +2108,7 @@ void boss_illidan_stormrageAI::Reset()
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, 0);
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, 0);
- m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
+ m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
DoCast(m_creature, SPELL_DUAL_WIELD, true);
}
diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp
index acc6d03f1bb..09187f0d4c8 100644
--- a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp
+++ b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp
@@ -238,7 +238,10 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI
//someone evaded!
if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+ {
EnterEvadeMode();
+ return;
+ }
//ArcingSmash_Timer
if (ArcingSmash_Timer < diff)
@@ -365,7 +368,10 @@ struct TRINITY_DLL_DECL boss_olm_the_summonerAI : public ScriptedAI
//someone evaded!
if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+ {
EnterEvadeMode();
+ return;
+ }
//DarkDecay_Timer
if(DarkDecay_Timer < diff)
@@ -489,7 +495,10 @@ struct TRINITY_DLL_DECL boss_kiggler_the_crazedAI : public ScriptedAI
//someone evaded!
if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+ {
EnterEvadeMode();
+ return;
+ }
//GreaterPolymorph_Timer
if(GreaterPolymorph_Timer < diff)
@@ -616,7 +625,10 @@ struct TRINITY_DLL_DECL boss_blindeye_the_seerAI : public ScriptedAI
//someone evaded!
if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+ {
EnterEvadeMode();
+ return;
+ }
//GreaterPowerWordShield_Timer
if(GreaterPowerWordShield_Timer < diff)
@@ -727,7 +739,10 @@ struct TRINITY_DLL_DECL boss_krosh_firehandAI : public ScriptedAI
//someone evaded!
if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+ {
EnterEvadeMode();
+ return;
+ }
//GreaterFireball_Timer
if(GreaterFireball_Timer < diff || m_creature->GetDistance(m_creature->getVictim()) < 30)
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 2807b2602ee..ed27c42eeee 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -3489,9 +3489,12 @@ void Spell::EffectSummonWild(uint32 i)
int32 duration = GetSpellDuration(m_spellInfo);
- TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_OR_DEAD_DESPAWN;
+ TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
- m_caster->SummonCreature(creature_entry,px,py,pz,m_caster->GetOrientation(),summonType,duration);
+ if(m_originalCaster)
+ m_originalCaster->SummonCreature(creature_entry,px,py,pz,m_caster->GetOrientation(),summonType,duration);
+ else
+ m_caster->SummonCreature(creature_entry,px,py,pz,m_caster->GetOrientation(),summonType,duration);
}
}