diff options
| author | megamage <none@none> | 2008-10-24 17:37:40 -0500 |
|---|---|---|
| committer | megamage <none@none> | 2008-10-24 17:37:40 -0500 |
| commit | 0a3057972c78196621196cc68e785ed6d81e75c1 (patch) | |
| tree | 68cd8927f52f7840de4520e818e89229833925f7 /src | |
| parent | 67f95a52816be71f1432ae0165fb22ef7733e6ef (diff) | |
[svn] Fix a crash caused by gruul script.
Change in EffectSummonWild and DoZoneInCombat.
--HG--
branch : trunk
Diffstat (limited to 'src')
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); } } |
