Skip to content
This repository has been archived by the owner on Mar 30, 2019. It is now read-only.

Commit

Permalink
Rest
Browse files Browse the repository at this point in the history
  • Loading branch information
philipp.dallig committed Nov 20, 2011
1 parent 3537dae commit 32632d4
Show file tree
Hide file tree
Showing 11 changed files with 113 additions and 142 deletions.
11 changes: 7 additions & 4 deletions ScriptMgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,18 @@
#include "World.h"

typedef std::vector<Script*> SDScriptVec;
typedef std::map<std::string, Script*> SDScriptMap;

int num_sc_scripts;
SDScriptVec m_scripts;
SDScriptVec *m_scripts = NULL;
SDScriptMap *m_scriptStorage = NULL; // Not registered scripts storage

Config SD2Config;

/**********************************************************************
+additions for windows compiler
**********************************************************************/
#ifdef _WIN32
template<> bool MaNGOS::Singleton<World>::si_destroyed;
template<> bool MaNGOS::Singleton<ObjectMgr>::si_destroyed;
template<> World *MaNGOS::Singleton<World>::si_instance;
Expand All @@ -35,14 +39,13 @@ World::~World()
ObjectMgr::~ObjectMgr()
{
}
#endif
/***********************************************************************/

QueryResult* strSD2Pquery(char* str)
{
return SD2Database.Query(str);
return SD2Database.Query(str);
}
// Not registered scripts storage
std::map<std::string, Script*> m_scriptStorage;

void FillSpellSummary();

Expand Down
2 changes: 1 addition & 1 deletion include/precompiled.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include "sc_gossip.h"
#include "sc_grid_searchers.h"
#include "sc_instance.h"
#include "sc_outdoor_pvp.h"
#include "sc_utility.h"

#ifdef WIN32
# include <windows.h>
Expand Down
26 changes: 16 additions & 10 deletions scripts/northrend/ruby_sanctum/boss_baltharus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,22 +128,28 @@ struct MANGOS_DLL_DECL boss_baltharusAI : public BSWScriptedAI

void JustDied(Unit* pKiller)
{
if (!pInstance) return;
if (!pInstance)
return;

if (pDummyTarget) pDummyTarget->ForcedDespawn();
DoScriptText(SAY_BALTHARUS_DEATH,m_creature);
pInstance->SetData(TYPE_BALTHARUS, DONE);
if (pInstance->GetData(TYPE_BALTHARUS) != DONE)
{
pInstance->SetData(TYPE_BALTHARUS, DONE);
if (pDummyTarget && pDummyTarget->IsInWorld())
pDummyTarget->ForcedDespawn();
}
}

void KilledUnit(Unit* pVictim)
{
switch (urand(0,1)) {
case 0:
DoScriptText(SAY_BALTHARUS_SLAY_1,m_creature,pVictim);
break;
case 1:
DoScriptText(SAY_BALTHARUS_SLAY_2,m_creature,pVictim);
break;
switch (urand(0,1))
{
case 0:
DoScriptText(SAY_BALTHARUS_SLAY_1,m_creature,pVictim);
break;
case 1:
DoScriptText(SAY_BALTHARUS_SLAY_2,m_creature,pVictim);
break;
};
}

Expand Down
9 changes: 5 additions & 4 deletions scripts/northrend/ruby_sanctum/boss_halion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -716,8 +716,6 @@ struct MANGOS_DLL_DECL mob_halion_controlAI : public BSWScriptedAI
}

ScriptedInstance* pInstance;
Creature* pHalionReal;
Creature* pHalionTwilight;
uint32 m_lastBuffReal, m_lastBuffTwilight;
bool m_detectplayers;

Expand Down Expand Up @@ -774,8 +772,11 @@ struct MANGOS_DLL_DECL mob_halion_controlAI : public BSWScriptedAI

if (pInstance->GetData(TYPE_HALION_EVENT) != SPECIAL) return;

pHalionReal = pInstance->GetSingleCreatureFromStorage(NPC_HALION_REAL);
pHalionTwilight = pInstance->GetSingleCreatureFromStorage(NPC_HALION_TWILIGHT);
Creature* pHalionReal = pInstance->GetSingleCreatureFromStorage(NPC_HALION_REAL);
Creature* pHalionTwilight = pInstance->GetSingleCreatureFromStorage(NPC_HALION_TWILIGHT);

if (!pHalionTwilight || !pHalionReal)
return;

//pHalionReal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
pHalionTwilight->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
Expand Down
18 changes: 9 additions & 9 deletions scripts/northrend/ulduar/halls_of_lightning/boss_bjarngrim.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -405,15 +405,15 @@ CreatureAI* GetAI_mob_stormforged_lieutenant(Creature* pCreature)

void AddSC_boss_bjarngrim()
{
Script *newscript;
Script* pNewScript;

newscript = new Script;
newscript->Name = "boss_bjarngrim";
newscript->GetAI = &GetAI_boss_bjarngrim;
newscript->RegisterSelf();
pNewScript = new Script;
pNewScript->Name = "boss_bjarngrim";
pNewScript->GetAI = &GetAI_boss_bjarngrim;
pNewScript->RegisterSelf();

newscript = new Script;
newscript->Name = "mob_stormforged_lieutenant";
newscript->GetAI = &GetAI_mob_stormforged_lieutenant;
newscript->RegisterSelf();
pNewScript = new Script;
pNewScript->Name = "mob_stormforged_lieutenant";
pNewScript->GetAI = &GetAI_mob_stormforged_lieutenant;
pNewScript->RegisterSelf();
}
123 changes: 43 additions & 80 deletions scripts/northrend/ulduar/halls_of_lightning/boss_ionar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ struct MANGOS_DLL_DECL boss_ionarAI : public ScriptedAI
bool m_bIsRegularMode;

bool m_bIsSplitPhase;
uint32 m_uiSplit_Timer;
uint32 m_uiSplitTimer;
uint32 m_uiSparkAtHomeCount;

uint32 m_uiStaticOverload_Timer;
uint32 m_uiBallLightning_Timer;
uint32 m_uiStaticOverloadTimer;
uint32 m_uiBallLightningTimer;

uint32 m_uiHealthAmountModifier;

Expand All @@ -86,11 +86,11 @@ struct MANGOS_DLL_DECL boss_ionarAI : public ScriptedAI
m_lSparkGUIDList.clear();

m_bIsSplitPhase = true;
m_uiSplit_Timer = 25000;
m_uiSplitTimer = 25000;
m_uiSparkAtHomeCount = 0;

m_uiStaticOverload_Timer = urand(5000, 6000);
m_uiBallLightning_Timer = urand(10000, 11000);
m_uiStaticOverloadTimer = urand(5000, 6000);
m_uiBallLightningTimer = urand(10000, 11000);

m_uiHealthAmountModifier = 1;

Expand Down Expand Up @@ -157,10 +157,7 @@ struct MANGOS_DLL_DECL boss_ionarAI : public ScriptedAI

void DespawnSpark()
{
if (m_lSparkGUIDList.empty())
return;

for(GUIDList::const_iterator itr = m_lSparkGUIDList.begin(); itr != m_lSparkGUIDList.end(); ++itr)
for (GUIDList::const_iterator itr = m_lSparkGUIDList.begin(); itr != m_lSparkGUIDList.end(); ++itr)
{
if (Creature* pTemp = m_creature->GetMap()->GetCreature(*itr))
{
Expand All @@ -172,14 +169,10 @@ struct MANGOS_DLL_DECL boss_ionarAI : public ScriptedAI
m_lSparkGUIDList.clear();
}

//make sparks come back
// make sparks come back
void CallBackSparks()
{
//should never be empty here, but check
if (m_lSparkGUIDList.empty())
return;

for(GUIDList::const_iterator itr = m_lSparkGUIDList.begin(); itr != m_lSparkGUIDList.end(); ++itr)
for (GUIDList::const_iterator itr = m_lSparkGUIDList.begin(); itr != m_lSparkGUIDList.end(); ++itr)
{
if (Creature* pSpark = m_creature->GetMap()->GetCreature(*itr))
{
Expand Down Expand Up @@ -207,29 +200,24 @@ struct MANGOS_DLL_DECL boss_ionarAI : public ScriptedAI
{
pSummoned->CastSpell(pSummoned, m_bIsRegularMode ? SPELL_SPARK_VISUAL_TRIGGER_N : SPELL_SPARK_VISUAL_TRIGGER_H, true);

Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0);

if (m_creature->getVictim())
pSummoned->AI()->AttackStart(pTarget ? pTarget : m_creature->getVictim());
if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))
pSummoned->AI()->AttackStart(pTarget);

m_lSparkGUIDList.push_back(pSummoned->GetObjectGuid());
}
}

void UpdateAI(const uint32 uiDiff)
{
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;

// Splitted
if (m_creature->GetVisibility() == VISIBILITY_OFF)
{
if (!m_creature->isInCombat())
if (m_uiSplitTimer < uiDiff)
{
Reset();
return;
}

if (m_uiSplit_Timer < uiDiff)
{
m_uiSplit_Timer = 2500;
m_uiSplitTimer = 2500;

// Return sparks to where Ionar splitted
if (m_bIsSplitPhase)
Expand All @@ -241,12 +229,11 @@ struct MANGOS_DLL_DECL boss_ionarAI : public ScriptedAI
else
{
m_creature->SetVisibility(VISIBILITY_ON);
m_creature->CastSpell(m_creature, SPELL_SPARK_DESPAWN, false);

DoCastSpellIfCan(m_creature, SPELL_SPARK_DESPAWN);
DespawnSpark();

m_uiSparkAtHomeCount = 0;
m_uiSplit_Timer = 25000;
m_uiSplitTimer = 25000;
m_bIsSplitPhase = true;

if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != CHASE_MOTION_TYPE)
Expand All @@ -257,56 +244,32 @@ struct MANGOS_DLL_DECL boss_ionarAI : public ScriptedAI
}
}
else
m_uiSplit_Timer -= uiDiff;
m_uiSplitTimer -= uiDiff;

return;
}

if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;

if (m_uiStaticOverload_Timer < uiDiff)
if (m_uiStaticOverloadTimer < uiDiff)
{
if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))
DoCastSpellIfCan(pTarget, m_bIsRegularMode ? SPELL_STATIC_OVERLOAD_N : SPELL_STATIC_OVERLOAD_H);

m_uiStaticOverload_Timer = urand(5000, 6000);
{
if (DoCastSpellIfCan(pTarget, m_bIsRegularMode ? SPELL_STATIC_OVERLOAD_N : SPELL_STATIC_OVERLOAD_H) == CAST_OK)
m_uiStaticOverloadTimer = urand(5000, 6000);
}
}
else
m_uiStaticOverload_Timer -= uiDiff;
m_uiStaticOverloadTimer -= uiDiff;

if (m_uiBallLightning_Timer < uiDiff)
if (m_uiBallLightningTimer < uiDiff)
{
Unit *target = NULL;
std::vector<Unit *> target_list;

ThreatList const& tList = m_creature->getThreatManager().getThreatList();
for (ThreatList::const_iterator itr = tList.begin();itr != tList.end(); ++itr)
if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))
{
target = m_creature->GetMap()->GetUnit((*itr)->getUnitGuid());

// exclude pets & totems
if (!target || target->GetTypeId() != TYPEID_PLAYER)
continue;

//10 yard radius minimum
if (target->IsWithinDist(m_creature, 10.0f, false))
continue;

target_list.push_back(target);
if (DoCastSpellIfCan(pTarget, m_bIsRegularMode ? SPELL_BALL_LIGHTNING_N : SPELL_BALL_LIGHTNING_H) == CAST_OK)
m_uiBallLightningTimer = urand(10000, 11000);
}

if (target_list.size())
target = *(target_list.begin()+rand()%target_list.size());
else
target = m_creature->getVictim();

if (target)
DoCastSpellIfCan(target, m_bIsRegularMode ? SPELL_BALL_LIGHTNING_N : SPELL_BALL_LIGHTNING_H);
m_uiBallLightning_Timer = urand(10000, 11000);
}
else
m_uiBallLightning_Timer -= uiDiff;
m_uiBallLightningTimer -= uiDiff;

// Health check
if (m_creature->GetHealthPercent() < float(100 - 20*m_uiHealthAmountModifier))
Expand Down Expand Up @@ -338,7 +301,7 @@ bool EffectDummyCreature_boss_ionar(Unit* pCaster, uint32 uiSpellId, SpellEffect
if (pCreatureTarget->GetEntry() != NPC_IONAR)
return true;

for(uint8 i = 0; i < MAX_SPARKS; ++i)
for (uint8 i = 0; i < MAX_SPARKS; ++i)
pCreatureTarget->CastSpell(pCreatureTarget, SPELL_SUMMON_SPARK, true);

pCreatureTarget->AttackStop();
Expand Down Expand Up @@ -404,16 +367,16 @@ CreatureAI* GetAI_mob_spark_of_ionar(Creature* pCreature)

void AddSC_boss_ionar()
{
Script *newscript;

newscript = new Script;
newscript->Name = "boss_ionar";
newscript->GetAI = &GetAI_boss_ionar;
newscript->pEffectDummyNPC = &EffectDummyCreature_boss_ionar;
newscript->RegisterSelf();

newscript = new Script;
newscript->Name = "mob_spark_of_ionar";
newscript->GetAI = &GetAI_mob_spark_of_ionar;
newscript->RegisterSelf();
Script* pNewScript;

pNewScript = new Script;
pNewScript->Name = "boss_ionar";
pNewScript->GetAI = &GetAI_boss_ionar;
pNewScript->pEffectDummyNPC = &EffectDummyCreature_boss_ionar;
pNewScript->RegisterSelf();

pNewScript = new Script;
pNewScript->Name = "mob_spark_of_ionar";
pNewScript->GetAI = &GetAI_mob_spark_of_ionar;
pNewScript->RegisterSelf();
}
10 changes: 5 additions & 5 deletions scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -248,10 +248,10 @@ CreatureAI* GetAI_boss_loken(Creature* pCreature)

void AddSC_boss_loken()
{
Script *newscript;
Script* pNewScript;

newscript = new Script;
newscript->Name = "boss_loken";
newscript->GetAI = &GetAI_boss_loken;
newscript->RegisterSelf();
pNewScript = new Script;
pNewScript->Name = "boss_loken";
pNewScript->GetAI = &GetAI_boss_loken;
pNewScript->RegisterSelf();
}
Loading

0 comments on commit 32632d4

Please sign in to comment.