diff options
author | Blaymoira <none@none> | 2009-01-25 00:10:44 +0100 |
---|---|---|
committer | Blaymoira <none@none> | 2009-01-25 00:10:44 +0100 |
commit | fff472c16b5fa2f57ae4f2f04ac4be840dfead53 (patch) | |
tree | 11580fef82559c3fe86725621f153ecc8d35df5c | |
parent | 1b0bab7f010ba5d188772685af7102ab9ece7d23 (diff) |
*Remove use of worldpacket and send expected world state update for enemies left (per wave) in hyjal - by nofantasy
--HG--
branch : trunk
5 files changed, 50 insertions, 40 deletions
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/def_hyjal.h b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/def_hyjal.h index 1e28156857f..164d26223b9 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/def_hyjal.h +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/def_hyjal.h @@ -5,6 +5,10 @@ #ifndef DEF_HYJAL_H #define DEF_HYJAL_H +#define WORLD_STATE_WAVES 2842 +#define WORLD_STATE_ENEMY 2453 +#define WORLD_STATE_ENEMYCOUNT 2454 + #define DATA_ANETHERON 1 #define DATA_ANETHERONEVENT 2 #define DATA_ARCHIMONDE 3 @@ -21,5 +25,5 @@ #define DATA_TRASH 14 #define DATA_RESET_TRASH_COUNT 15 -#define ERROR_INST_DATA "SD2: Instance data not set properly for Mount Hyjal. Encounters will be buggy" +#define ERROR_INST_DATA "TSCR: Instance data not set properly for Mount Hyjal. Encounters will be buggy" #endif diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp index cbb8ce53b91..4e4734f817a 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp @@ -17,13 +17,12 @@ /* ScriptData SDName: HyjalAI SD%Complete: 90 -SDComment: World Packet workaround for World States +SDComment: SDCategory: Caverns of Time, Mount Hyjal EndScriptData */ #include "precompiled.h" #include "hyjalAI.h" -#include "WorldPacket.h" // Locations for summoning waves in Alliance base float AllianceBase[4][3]= @@ -99,9 +98,9 @@ void hyjalAI::Reset() memset(Spell, 0, sizeof(Spell)); //Reset World States - UpdateWorldState(WORLDSTATE_WAVES, 0); - UpdateWorldState(WORLDSTATE_ENEMY, 0); - UpdateWorldState(WORLDSTATE_ENEMYCOUNT, 0); + UpdateWorldState(WORLD_STATE_WAVES, 0); + UpdateWorldState(WORLD_STATE_ENEMY, 0); + UpdateWorldState(WORLD_STATE_ENEMYCOUNT, 0); //Reset Instance Data for trash count if(pInstance) @@ -204,22 +203,24 @@ void hyjalAI::SummonNextWave(Wave wave[18], uint32 Count, float Base[4][3]) uint32 stateValue = Count+1; if(FirstBossDead) stateValue -= 9; // Subtract 9 from it to give the proper wave number if we are greater than 8 - UpdateWorldState(WORLDSTATE_WAVES, stateValue); // Set world state to our current wave number - UpdateWorldState(WORLDSTATE_ENEMY, 1); - //UpdateWorldState(WORLDSTATE_ENEMYCOUNT, EnemyCount); // Let Instance Script handle this - pInstance->SetData(DATA_TRASH, EnemyCount); + UpdateWorldState(WORLD_STATE_WAVES, stateValue); // Set world state to our current wave number + UpdateWorldState(WORLD_STATE_ENEMY, 1); // Enable world state + + pInstance->SetData(DATA_TRASH, EnemyCount); // Send data for instance script to update count + if(!Debug) NextWaveTimer = wave[Count].WaveTimer; else { NextWaveTimer = 15000; - DoTextEmote(": Debug Mode is enabled. Next Wave in 15 seconds", NULL); + debug_log("TSCR: HyjalAI: debug mode is enabled. Next Wave in 15 seconds"); } } else { - UpdateWorldState(WORLDSTATE_WAVES, 0); // Set world state for waves to 0 to disable it. - UpdateWorldState(WORLDSTATE_ENEMYCOUNT, 1); // Set World State for enemies invading to 1. + UpdateWorldState(WORLD_STATE_WAVES, 0); // Set world state for waves to 0 to disable it. + UpdateWorldState(WORLD_STATE_ENEMY, 1); + UpdateWorldState(WORLD_STATE_ENEMYCOUNT, 1); // Set World State for enemies invading to 1. Summon = false; } CheckTimer = 5000; @@ -241,9 +242,9 @@ void hyjalAI::StartEvent(Player* player) m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - UpdateWorldState(WORLDSTATE_WAVES, 0); - UpdateWorldState(WORLDSTATE_ENEMY, 0); - UpdateWorldState(WORLDSTATE_ENEMYCOUNT, 0); + UpdateWorldState(WORLD_STATE_WAVES, 0); + UpdateWorldState(WORLD_STATE_ENEMY, 0); + UpdateWorldState(WORLD_STATE_ENEMYCOUNT, 0); } uint32 hyjalAI::GetInstanceData(uint32 Event) @@ -291,20 +292,25 @@ void hyjalAI::Talk(uint32 id) DoScriptText(YellId, m_creature); } -// Slight workaround for now -void hyjalAI::UpdateWorldState(uint32 field, uint32 value) +void hyjalAI::UpdateWorldState(uint32 id, uint32 state) { Map * map = m_creature->GetMap(); - if(!map->IsDungeon()) return; - - WorldPacket data(SMSG_UPDATE_WORLD_STATE, 8); - - data << field; - data << value; + + if(!map->IsDungeon()) + return; - map->SendToPlayers(&data); + Map::PlayerList const& players = map->GetPlayers(); + + if (!players.isEmpty()) + { + for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + { + if (Player* player = itr->getSource()) + player->SendUpdateWorldState(id,state); + } + }else debug_log("TSCR: HyjalAI: UpdateWorldState, but PlayerList is empty"); - // TODO: Uncomment and remove everything above this line only when the core patch for this is accepted + //remove everything above this line only when/if the core patch for this is accepted and needed //m_creature->GetMap()->UpdateWorldState(field, value); } @@ -420,7 +426,7 @@ void hyjalAI::UpdateAI(const uint32 diff) CheckTimer = 0; m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); BossGUID[i] = 0; - UpdateWorldState(WORLDSTATE_ENEMY, 0); // Reset world state for enemies to disable it + UpdateWorldState(WORLD_STATE_ENEMY, 0); // Reset world state for enemies to disable it } } } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.h b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.h index b89290cd875..0c638385e78 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.h +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.h @@ -27,10 +27,6 @@ #define SPELL_TELEPORT_VISUAL 41232 -#define WORLDSTATE_WAVES 2842 -#define WORLDSTATE_ENEMY 2453 -#define WORLDSTATE_ENEMYCOUNT 2454 - //Spells for Jaina #define SPELL_BRILLIANCE_AURA 31260 // The database must handle this spell via creature_addon #define SPELL_BLIZZARD 31266 diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp index 92c17f655a3..1d67582927b 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp @@ -23,7 +23,6 @@ EndScriptData */ #include "precompiled.h" #include "def_hyjal.h" -#include "WorldPacket.h" #define ENCOUNTERS 5 @@ -121,7 +120,7 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance case DATA_TRASH: if(data) Trash = data; else Trash--; - UpdateWorldState(2453, data); + UpdateWorldState(WORLD_STATE_ENEMYCOUNT, Trash); break; } @@ -145,13 +144,18 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance return 0; } - void UpdateWorldState(uint32 field, uint32 value) + void UpdateWorldState(uint32 id, uint32 state) { - WorldPacket data(SMSG_UPDATE_WORLD_STATE, 8); - data << field; - data << value; - - instance->SendToPlayers(&data); + Map::PlayerList const& players = instance->GetPlayers(); + + if (!players.isEmpty()) + { + for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + { + if (Player* player = itr->getSource()) + player->SendUpdateWorldState(id,state); + } + }else debug_log("TSCR: Instance Hyjal: UpdateWorldState, but PlayerList is empty!"); } const char* Save() diff --git a/src/bindings/scripts/scripts/zone/shadowmoon_valley/boss_doomwalker.cpp b/src/bindings/scripts/scripts/zone/shadowmoon_valley/boss_doomwalker.cpp index eade0b96455..003c7d5bfec 100644 --- a/src/bindings/scripts/scripts/zone/shadowmoon_valley/boss_doomwalker.cpp +++ b/src/bindings/scripts/scripts/zone/shadowmoon_valley/boss_doomwalker.cpp @@ -40,7 +40,7 @@ EndScriptData */ #define SPELL_ENRAGE 33653 #define SPELL_MARK_DEATH 37128 -struct MANGOS_DLL_DECL boss_doomwalkerAI : public ScriptedAI +struct TRINITY_DLL_DECL boss_doomwalkerAI : public ScriptedAI { boss_doomwalkerAI(Creature *c) : ScriptedAI(c) {Reset();} |