From 4d689ec5432da9c8a9d1983b09b3bc95ce501648 Mon Sep 17 00:00:00 2001 From: Wilds Date: Sat, 10 Dec 2011 02:01:53 +0100 Subject: Core/Spells: fix Lightwell (in combat consume charges) --- src/server/scripts/World/npcs_special.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/server/scripts') diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index a5e5b467fc7..deb1e702ab9 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -2030,6 +2030,16 @@ public: { DoCast(me, 59907, false); // Spell for Lightwell Charges } + + void EnterEvadeMode() + { + if (!me->isAlive()) + return; + + me->DeleteThreatList(); + me->CombatStop(true); + me->ResetPlayerDamageReq(); + } }; CreatureAI* GetAI(Creature* creature) const -- cgit v1.2.3 From b4df932e7184a1ec9987b2592a3df8f6a0b267b2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 18 Dec 2011 22:09:03 +0100 Subject: Core/Dungeon Finder: Implemented Luck of the Draw buff --- .../2011_12_18_02_world_spell_script_names.sql | 3 ++ src/server/game/Maps/Map.cpp | 8 ++++ src/server/scripts/Spells/spell_generic.cpp | 50 ++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 sql/updates/world/2011_12_18_02_world_spell_script_names.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_18_02_world_spell_script_names.sql b/sql/updates/world/2011_12_18_02_world_spell_script_names.sql new file mode 100644 index 00000000000..c5f9a4376df --- /dev/null +++ b/sql/updates/world/2011_12_18_02_world_spell_script_names.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_gen_luck_of_the_draw'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(72221,'spell_gen_luck_of_the_draw'); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 04a5b102a6d..306af9c962a 100755 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -30,6 +30,7 @@ #include "MapManager.h" #include "ObjectMgr.h" #include "Group.h" +#include "LFGMgr.h" union u_map_magic { @@ -2318,6 +2319,13 @@ bool InstanceMap::AddPlayerToMap(Player* player) ASSERT(playerBind->save == mapSave); } } + + if (group && group->isLFGGroup()) + if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true)) + if (LFGDungeonEntry const* dungeon = sLFGDungeonStore.LookupEntry(dungeonId)) + if (LFGDungeonEntry const* randomDungeon = sLFGDungeonStore.LookupEntry(*(sLFGMgr->GetSelectedDungeons(player->GetGUID()).begin()))) + if (dungeon->map == GetId() && dungeon->difficulty == GetDifficulty() && randomDungeon->type == LFG_TYPE_RANDOM) + player->CastSpell(player, LFG_SPELL_LUCK_OF_THE_DRAW, true); } // for normal instances cancel the reset schedule when the diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 260b0c57563..af558d479a5 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -26,6 +26,8 @@ #include "SpellAuraEffects.h" #include "SkillDiscovery.h" #include "GridNotifiers.h" +#include "Group.h" +#include "LFGMgr.h" class spell_gen_absorb0_hitlimit1 : public SpellScriptLoader { @@ -1419,6 +1421,53 @@ public: } }; +class spell_gen_luck_of_the_draw : public SpellScriptLoader +{ + public: + spell_gen_luck_of_the_draw() : SpellScriptLoader("spell_gen_luck_of_the_draw") { } + + class spell_gen_luck_of_the_draw_AuraScript : public AuraScript + { + PrepareAuraScript(spell_gen_luck_of_the_draw_AuraScript); + + // cheap hax to make it have update calls + void CalcPeriodic(AuraEffect const* /*effect*/, bool& isPeriodic, int32& amplitude) + { + isPeriodic = true; + amplitude = 5 * IN_MILLISECONDS; + } + + void Update(AuraEffect* /*effect*/) + { + if (GetUnitOwner()->GetTypeId() != TYPEID_PLAYER) + return; + + LFGDungeonEntry const* randomDungeon = sLFGDungeonStore.LookupEntry(*(sLFGMgr->GetSelectedDungeons(GetUnitOwner()->GetGUID()).begin())); + Group* group = GetUnitOwner()->ToPlayer()->GetGroup(); + Map const* map = GetUnitOwner()->GetMap(); + if (group && group->isLFGGroup()) + if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true)) + if (LFGDungeonEntry const* dungeon = sLFGDungeonStore.LookupEntry(dungeonId)) + if (dungeon->map == map->GetId() && dungeon->difficulty == map->GetDifficulty()) + if (randomDungeon && randomDungeon->type == LFG_TYPE_RANDOM) + return; // in correct dungeon + + Remove(AURA_REMOVE_BY_DEFAULT); + } + + void Register() + { + DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_gen_luck_of_the_draw_AuraScript::CalcPeriodic, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); + OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_gen_luck_of_the_draw_AuraScript::Update, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_gen_luck_of_the_draw_AuraScript(); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_absorb0_hitlimit1(); @@ -1451,4 +1500,5 @@ void AddSC_generic_spell_scripts() new spell_gen_vehicle_scaling(); new spell_gen_oracle_wolvar_reputation(); new spell_gen_damage_reduction_aura(); + new spell_gen_luck_of_the_draw(); } -- cgit v1.2.3 From 7a2f7b0e6344bd5659d35f6ef50f23656cd68140 Mon Sep 17 00:00:00 2001 From: kaelima Date: Sun, 18 Dec 2011 22:45:23 +0100 Subject: Commands/Npc: Add AIName/ScriptName to npc info Thanks Aokromes for suggestion --- sql/updates/world/2011_12_18_03_world_trinity_string.sql | 3 +++ src/server/game/Miscellaneous/Language.h | 3 ++- src/server/scripts/Commands/cs_npc.cpp | 10 ++++------ 3 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 sql/updates/world/2011_12_18_03_world_trinity_string.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_18_03_world_trinity_string.sql b/sql/updates/world/2011_12_18_03_world_trinity_string.sql new file mode 100644 index 00000000000..d26cc356cff --- /dev/null +++ b/sql/updates/world/2011_12_18_03_world_trinity_string.sql @@ -0,0 +1,3 @@ +DELETE FROM `trinity_string` WHERE `entry`=5031; +INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES +(5031, 'AIName: %s ScriptName: %s'); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index a6ff663b302..a5935e1de9f 100755 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -946,8 +946,9 @@ enum TrinityStrings LANG_GOINFO_NAME = 5027, LANG_GOINFO_LOOTID = 5028, LANG_COMMAND_LOOKUP_MAX_RESULTS = 5029, - // Room for more Trinity strings 5030-9999 LANG_FLEE = 5030, + LANG_NPCINFO_AIINFO = 5031, + // Room for more Trinity strings 5032-9999 // Level requirement notifications LANG_SAY_REQ = 6604, diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index b9ac21cc040..a5aa2a516f3 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -552,15 +552,13 @@ public: handler->PSendSysMessage(LANG_NPCINFO_PHASEMASK, target->GetPhaseMask()); handler->PSendSysMessage(LANG_NPCINFO_ARMOR, target->GetArmor()); handler->PSendSysMessage(LANG_NPCINFO_POSITION, float(target->GetPositionX()), float(target->GetPositionY()), float(target->GetPositionZ())); + handler->PSendSysMessage(LANG_NPCINFO_AIINFO, target->GetAIName().c_str(), target->GetScriptName().c_str()); - if ((npcflags & UNIT_NPC_FLAG_VENDOR)) - { + if (npcflags & UNIT_NPC_FLAG_VENDOR) handler->SendSysMessage(LANG_NPCINFO_VENDOR); - } - if ((npcflags & UNIT_NPC_FLAG_TRAINER)) - { + + if (npcflags & UNIT_NPC_FLAG_TRAINER) handler->SendSysMessage(LANG_NPCINFO_TRAINER); - } return true; } -- cgit v1.2.3 From b119558ee1d8198ef29ed393badf6e0ad9491de1 Mon Sep 17 00:00:00 2001 From: horn Date: Sun, 18 Dec 2011 23:42:23 +0100 Subject: Core/Dungeon Finder: Fixed LFG rewards in UK, ToCH, CoS and DTK. --- sql/updates/world/2011_12_18_04_world_conditions.sql | 7 +++++++ .../Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp | 8 ++++---- .../CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp | 8 ++++++-- src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp | 3 ++- .../UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp | 4 ++++ 5 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 sql/updates/world/2011_12_18_04_world_conditions.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_18_04_world_conditions.sql b/sql/updates/world/2011_12_18_04_world_conditions.sql new file mode 100644 index 00000000000..a56151a9f8f --- /dev/null +++ b/sql/updates/world/2011_12_18_04_world_conditions.sql @@ -0,0 +1,7 @@ +UPDATE spell_dbc SET EffectImplicitTargetA1 = 22, EffectImplicitTargetB1 = 7 WHERE Id = 58630; + +DELETE FROM conditions WHERE SourceTypeOrReferenceId = 13 AND SourceEntry IN (61863, 68663); +INSERT INTO conditions (SourceTypeOrReferenceId, SourceEntry, ConditionTypeOrReference, ConditionValue1, Comment) VALUES +(13, 61863, 18, 1, 'The Prophet Tharon''ja - Achievement Check'), +(13, 68663, 18, 1, 'The Black Knight - Kill Credit'), +(13, 58630, 18, 1, 'Mal''Ganis - Kill Credit'); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp index 1a43472365a..798ea3925dc 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp @@ -34,7 +34,8 @@ enum Spells H_SPELL_MIND_BLAST = 58850, SPELL_SLEEP = 52721, //Puts an enemy to sleep for up to 10 sec. Any damage caused will awaken the target. H_SPELL_SLEEP = 58849, - SPELL_VAMPIRIC_TOUCH = 52723 //Heals the caster for half the damage dealt by a melee attack. + SPELL_VAMPIRIC_TOUCH = 52723, //Heals the caster for half the damage dealt by a melee attack. + SPELL_KILL_CREDIT = 58630 // Non-existing spell as encounter credit, created in spell_dbc }; enum Yells @@ -237,9 +238,8 @@ public: { instance->SetData(DATA_MAL_GANIS_EVENT, DONE); - // give achievement credit to players. criteria use spell 58630 which doesn't exist. - if (instance) - instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, 58630); + // give achievement credit and LFG rewards to players. criteria use spell 58630 which doesn't exist, but it was created in spell_dbc + DoCast(me, SPELL_KILL_CREDIT); } } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp index fd84c1eec8a..f73e9779248 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp @@ -54,8 +54,10 @@ enum eSpells SPELL_BLACK_KNIGHT_RES = 67693, - SPELL_LEAP = 67749, - SPELL_LEAP_H = 67880 + SPELL_LEAP = 67749, + SPELL_LEAP_H = 67880, + + SPELL_KILL_CREDIT = 68663 }; enum eModels @@ -288,6 +290,8 @@ public: void JustDied(Unit* /*killer*/) { + DoCast(me, SPELL_KILL_CREDIT); + if (instance) instance->SetData(BOSS_BLACK_KNIGHT, DONE); } diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp index e552341fd1e..d877bbd0842 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp @@ -237,7 +237,8 @@ public: for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) if (Player* player = i->getSource()) player->DeMorph(); - instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2, SPELL_ACHIEVEMENT_CHECK); + + DoCast(me, SPELL_ACHIEVEMENT_CHECK); instance->SetData(DATA_THARON_JA_EVENT, DONE); } diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp index dc2d34326a7..3712bd748a5 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp @@ -173,7 +173,11 @@ public: DoScriptText(YELL_DEAD_2, me); if (instance) + { + // Ingvar has MOB_INGVAR_UNDEAD id in this moment, so we have to update encounter state for his original id + instance->UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, MOB_INGVAR_HUMAN, me); instance->SetData(DATA_INGVAR_EVENT, DONE); + } } void KilledUnit(Unit* /*victim*/) -- cgit v1.2.3 From 6c03bf95351e7db2ce43a827d5acb526f042e131 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Mon, 19 Dec 2011 22:06:29 +0100 Subject: Core/Misc: Some random meaningless Engrish to English conversion in a method name because Discovered is too lazy to do it himself. --- src/server/game/AI/EventAI/CreatureEventAI.cpp | 2 +- src/server/game/AI/EventAI/CreatureEventAI.h | 2 +- src/server/game/AI/SmartScripts/SmartScript.cpp | 2 +- src/server/game/AI/SmartScripts/SmartScriptMgr.h | 2 +- src/server/game/Chat/Commands/Level0.cpp | 2 +- src/server/game/Entities/Player/Player.cpp | 2 +- src/server/game/Entities/Unit/Unit.cpp | 14 +++++++------- src/server/game/Entities/Unit/Unit.h | 4 ++-- src/server/game/Server/Protocol/Handlers/MiscHandler.cpp | 2 +- .../game/Server/Protocol/Handlers/MovementHandler.cpp | 2 +- src/server/game/Server/WorldSession.cpp | 1 - src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 +- .../scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp | 4 ++-- .../scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp | 6 +++--- .../scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp | 2 +- .../EscapeFromDurnholdeKeep/old_hillsbrad.cpp | 2 +- src/server/scripts/Kalimdor/durotar.cpp | 4 ++-- .../Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp | 4 ++-- 18 files changed, 29 insertions(+), 30 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/game/AI/EventAI/CreatureEventAI.cpp b/src/server/game/AI/EventAI/CreatureEventAI.cpp index be0dd8c3679..1db6bbd550e 100755 --- a/src/server/game/AI/EventAI/CreatureEventAI.cpp +++ b/src/server/game/AI/EventAI/CreatureEventAI.cpp @@ -840,7 +840,7 @@ void CreatureEventAI::ProcessAction(CreatureEventAI_Action const& action, uint32 me->Mount(action.mount.modelId); } else - me->Unmount(); + me->Dismount(); break; } diff --git a/src/server/game/AI/EventAI/CreatureEventAI.h b/src/server/game/AI/EventAI/CreatureEventAI.h index 2fc26bcbd3e..9cc8c8f9c4a 100755 --- a/src/server/game/AI/EventAI/CreatureEventAI.h +++ b/src/server/game/AI/EventAI/CreatureEventAI.h @@ -108,7 +108,7 @@ enum EventAI_ActionType ACTION_T_SET_SHEATH = 40, // Sheath (0-passive, 1-melee, 2-ranged) ACTION_T_FORCE_DESPAWN = 41, // No Params ACTION_T_SET_INVINCIBILITY_HP_LEVEL = 42, // MinHpValue, format(0-flat, 1-percent from max health) - ACTION_T_MOUNT_TO_ENTRY_OR_MODEL = 43, // Creature_template entry(param1) OR ModelId (param2) (or 0 for both to unmount) + ACTION_T_MOUNT_TO_ENTRY_OR_MODEL = 43, // Creature_template entry(param1) OR ModelId (param2) (or 0 for both to dismount) ACTION_T_SET_PHASE_MASK = 97, ACTION_T_SET_STAND_STATE = 98, diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index dded086b584..34d465a5e7e 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -994,7 +994,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u (*itr)->ToUnit()->Mount(e.action.morphOrMount.model); } else - (*itr)->ToUnit()->Unmount(); + (*itr)->ToUnit()->Dismount(); } delete targets; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index ea15cb46375..e8ec80672fc 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -408,7 +408,7 @@ enum SMART_ACTION SMART_ACTION_SET_SHEATH = 40, // Sheath (0-unarmed, 1-melee, 2-ranged) SMART_ACTION_FORCE_DESPAWN = 41, // timer SMART_ACTION_SET_INVINCIBILITY_HP_LEVEL = 42, // MinHpValue(+pct, -flat) - SMART_ACTION_MOUNT_TO_ENTRY_OR_MODEL = 43, // Creature_template entry(param1) OR ModelId (param2) (or 0 for both to unmount) + SMART_ACTION_MOUNT_TO_ENTRY_OR_MODEL = 43, // Creature_template entry(param1) OR ModelId (param2) (or 0 for both to dismount) SMART_ACTION_SET_INGAME_PHASE_MASK = 44, // mask SMART_ACTION_SET_DATA = 45, // Field, Data (only creature TODO) diff --git a/src/server/game/Chat/Commands/Level0.cpp b/src/server/game/Chat/Commands/Level0.cpp index 97173f75652..7ff7a82bf58 100755 --- a/src/server/game/Chat/Commands/Level0.cpp +++ b/src/server/game/Chat/Commands/Level0.cpp @@ -122,7 +122,7 @@ bool ChatHandler::HandleDismountCommand(const char* /*args*/) return false; } - m_session->GetPlayer()->Unmount(); + m_session->GetPlayer()->Dismount(); m_session->GetPlayer()->RemoveAurasByType(SPELL_AURA_MOUNTED); return true; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b59c8c0bdd7..3216abb13a0 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -20198,7 +20198,7 @@ bool Player::ActivateTaxiPathTo(uint32 taxi_path_id, uint32 spellid /*= 0*/) void Player::CleanupAfterTaxiFlight() { m_taxi.ClearTaxiDestinations(); // not destinations, clear source node - Unmount(); + Dismount(); RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT); getHostileRefManager().setOnlineOfflineState(true); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 5a7645bd513..193dd1786b0 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11942,7 +11942,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry) RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_MOUNT); } -void Unit::Unmount() +void Unit::Dismount() { if (!IsMounted()) return; @@ -11963,7 +11963,7 @@ void Unit::Unmount() data.appendPackGUID(GetGUID()); SendMessageToSet(&data, true); - // unmount as a vehicle + // dismount as a vehicle if (GetTypeId() == TYPEID_PLAYER && GetVehicleKit()) { // Send other players that we are no longer a vehicle @@ -12085,7 +12085,7 @@ void Unit::SetInCombatState(bool PvP, Unit* enemy) } if (!(creature->GetCreatureInfo()->type_flags & CREATURE_TYPEFLAGS_MOUNTED_COMBAT)) - Unmount(); + Dismount(); } for (Unit::ControlList::iterator itr = m_Controlled.begin(); itr != m_Controlled.end(); ++itr) @@ -15852,9 +15852,9 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au if (!charmer) return false; - // unmount players when charmed + // dismount players when charmed if (GetTypeId() == TYPEID_PLAYER) - Unmount(); + Dismount(); ASSERT(type != CHARM_TYPE_POSSESS || charmer->GetTypeId() == TYPEID_PLAYER); ASSERT((type == CHARM_TYPE_VEHICLE) == IsVehicle()); @@ -17000,7 +17000,7 @@ void Unit::_EnterVehicle(Vehicle* vehicle, int8 seatId, AuraApplication const* a InterruptNonMeleeSpells(false); player->StopCastingCharm(); player->StopCastingBindSight(); - Unmount(); + Dismount(); RemoveAurasByType(SPELL_AURA_MOUNTED); // drop flag at invisible in bg @@ -17100,7 +17100,7 @@ void Unit::_ExitVehicle(Position const* exitPosition) // Vehicle just died, we die too if (vehicle->GetBase()->getDeathState() == JUST_DIED) setDeathState(JUST_DIED); - // If for other reason we as minion are exiting the vehicle (ejected, master unmounted) - unsummon + // If for other reason we as minion are exiting the vehicle (ejected, master dismounted) - unsummon else ToTempSummon()->UnSummon(2000); // Approximation } diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 5906a7f3a2b..5f1bfd18627 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -65,7 +65,7 @@ enum SpellAuraInterruptFlags AURA_INTERRUPT_FLAG_MOVE = 0x00000008, // 3 removed by any movement AURA_INTERRUPT_FLAG_TURNING = 0x00000010, // 4 removed by any turning AURA_INTERRUPT_FLAG_JUMP = 0x00000020, // 5 removed by entering combat - AURA_INTERRUPT_FLAG_NOT_MOUNTED = 0x00000040, // 6 removed by unmounting + AURA_INTERRUPT_FLAG_NOT_MOUNTED = 0x00000040, // 6 removed by dismounting AURA_INTERRUPT_FLAG_NOT_ABOVEWATER = 0x00000080, // 7 removed by entering water AURA_INTERRUPT_FLAG_NOT_UNDERWATER = 0x00000100, // 8 removed by leaving water AURA_INTERRUPT_FLAG_NOT_SHEATHED = 0x00000200, // 9 removed by unsheathing @@ -1441,7 +1441,7 @@ class Unit : public WorldObject bool IsMounted() const { return HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_MOUNT); } uint32 GetMountID() const { return GetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID); } void Mount(uint32 mount, uint32 vehicleId = 0, uint32 creatureEntry = 0); - void Unmount(); + void Dismount(); uint16 GetMaxSkillValueForLevel(Unit const* target = NULL) const { return (target ? getLevelForTarget(target) : getLevel()) * 5; } void DealDamageMods(Unit* pVictim, uint32 &damage, uint32* absorb); diff --git a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp index d4211bad293..702c3c29982 100755 --- a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp @@ -1609,7 +1609,7 @@ void WorldSession::HandleCancelMountAuraOpcode(WorldPacket & /*recv_data*/) return; } - _player->Unmount(); + _player->Dismount(); _player->RemoveAurasByType(SPELL_AURA_MOUNTED); } diff --git a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp index 4e45eb2d6c6..ae2612e4ced 100755 --- a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp @@ -299,7 +299,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recv_data) // if we boarded a transport, add us to it if (plMover && !plMover->GetTransport()) { - // elevators also cause the client to send MOVEMENTFLAG_ONTRANSPORT - just unmount if the guid can be found in the transport list + // elevators also cause the client to send MOVEMENTFLAG_ONTRANSPORT - just dismount if the guid can be found in the transport list for (MapManager::TransportSet::const_iterator iter = sMapMgr->m_Transports.begin(); iter != sMapMgr->m_Transports.end(); ++iter) { if ((*iter)->GetGUID() == movementInfo.t_guid) diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 57844f53aa3..058ef875b0d 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -225,7 +225,6 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) //! Delete packet after processing by default bool deletePacket = true; //! To prevent infinite loop - bool delayedPackets = false; WorldPacket* firstDelayedPacket = NULL; //! If _recvQueue.peek() == firstDelayedPacket it means that in this Update call, we've processed all //! *properly timed* packets, and we're now at the part of the queue where we find diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 71122775492..140d818c775 100755 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -2821,7 +2821,7 @@ void AuraEffect::HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bo } else { - target->Unmount(); + target->Dismount(); //some mounts like Headless Horseman's Mount or broom stick are skill based spell // need to remove ALL arura related to mounts, this will stop client crash with broom stick // and never endless flying after using Headless Horseman's Mount diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index ebd30aa2f5d..8179c9fccaa 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -248,7 +248,7 @@ public: me->Mount(MODEL_DEATH_KNIGHT_MOUNT); break; case 10: - me->Unmount(); + me->Dismount(); break; } } @@ -378,7 +378,7 @@ public: void EnterCombat(Unit* /*who*/) { DoScriptText(SAY_TREE2, me); - me->Unmount(); + me->Dismount(); uiStage = 0; } diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 18316d67cd4..3ee71ce3609 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -526,13 +526,13 @@ public: NPCChangeTarget(uiOrbazGUID); NPCChangeTarget(uiThassarianGUID); - me->Unmount(); + me->Dismount(); me->CastSpell(me, SPELL_THE_MIGHT_OF_MOGRAINE, true); // need to fix, on player only if (Creature* temp = Unit::GetCreature(*me, uiKoltiraGUID)) - temp->Unmount(); + temp->Dismount(); if (Creature* temp = Unit::GetCreature(*me, uiThassarianGUID)) - temp->Unmount(); + temp->Dismount(); bIsBattle = true; break; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index f45c943b0f1..7dc357f692a 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -149,7 +149,7 @@ class boss_mandokir : public CreatureScript if (!CombatStart) { //At combat Start Mandokir is mounted so we must unmount it first - me->Unmount(); + me->Dismount(); //And summon his raptor me->SummonCreature(14988, me->getVictim()->GetPositionX(), me->getVictim()->GetPositionY(), me->getVictim()->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 35000); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index 1f0342b3804..65ae3287381 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -498,7 +498,7 @@ public: } void DoUnmount() { - me->Unmount(); + me->Dismount(); me->SetSpeed(MOVE_RUN, SPEED_RUN); } void EnterCombat(Unit* /*who*/) diff --git a/src/server/scripts/Kalimdor/durotar.cpp b/src/server/scripts/Kalimdor/durotar.cpp index 1f64353901c..d6d2d633890 100644 --- a/src/server/scripts/Kalimdor/durotar.cpp +++ b/src/server/scripts/Kalimdor/durotar.cpp @@ -400,7 +400,7 @@ class npc_troll_volunteer : public CreatureScript DoCast(me, SPELL_TURNIN); DoCast(me, SPELL_QUEST_CREDIT); me->RemoveAurasDueToSpell(SPELL_MOUNTING_CHECK); - me->Unmount(); + me->Dismount(); Talk(SAY_VOLUNTEER_END); me->GetMotionMaster()->MovePoint(POINT_URUZIN, caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ()); } @@ -447,7 +447,7 @@ class spell_mount_check : public SpellScriptLoader target->Mount(mountid); } else if (!owner->IsMounted() && target->IsMounted()) - target->Unmount(); + target->Dismount(); target->SetSpeed(MOVE_RUN, owner->GetSpeedRate(MOVE_RUN)); target->SetSpeed(MOVE_WALK, owner->GetSpeedRate(MOVE_WALK)); diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 7b459e7410d..f31271b825e 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -218,7 +218,7 @@ public: void JustReachedHome() { me->SetFlying(false); - me->Unmount(); + me->Dismount(); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE); if (Unit::GetCreature((*me), m_uiGraufGUID) == NULL) me->SummonCreature(CREATURE_GRAUF, Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 3.0f); @@ -285,7 +285,7 @@ public: { Phase = SKADI; me->SetFlying(false); - me->Unmount(); + me->Dismount(); if (Creature* pGrauf = me->SummonCreature(CREATURE_GRAUF, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3*IN_MILLISECONDS)) { pGrauf->GetMotionMaster()->MoveFall(0); -- cgit v1.2.3 From 6ccf95af4c5ce24cf6eecc49830dd0d714184ff6 Mon Sep 17 00:00:00 2001 From: kaelima Date: Wed, 21 Dec 2011 01:59:36 +0100 Subject: Scripts/Toc: Fix a possible crash with grand champions encounter. --- .../CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index 2fbe381fed5..ece172c685b 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -839,7 +839,8 @@ public: if (target && me->IsInRange(target, 5.0f, 30.0f, false)) { DoCast(target, SPELL_MULTI_SHOT); - } else + } + else if (target) { Map::PlayerList const& players = me->GetMap()->GetPlayers(); if (me->GetMap()->IsDungeon() && !players.isEmpty()) -- cgit v1.2.3 From e9ee82daf7261742fd2427e7336df78c3322132a Mon Sep 17 00:00:00 2001 From: kaelima Date: Thu, 22 Dec 2011 13:24:59 +0100 Subject: Scripts/Forge of Souls: Fix a crash alert for entry 36535. (trying to change movementgenerator during the delete process) --- src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index eacb800f15a..1e29ec55dc8 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -215,7 +215,6 @@ class mob_corrupted_soul_fragment : public CreatureScript if (Creature* bronjahm = ObjectAccessor::GetCreature(*me, BronjahmGUID)) me->CastSpell(bronjahm, SPELL_CONSUME_SOUL, true); - summ->GetMotionMaster()->MoveIdle(); summ->UnSummon(); } } -- cgit v1.2.3 From 398299084ef4c878cd362de86a2809099ce3a5be Mon Sep 17 00:00:00 2001 From: kaelima Date: Thu, 22 Dec 2011 18:48:06 +0100 Subject: Corrected some logic in my recent commits. - ff2dbfc38196e0aa339896357898ec25c8dcdc97 thanks LihO - 6ccf95af4c5ce24cf6eecc49830dd0d714184ff6 thanks frostmourne --- src/server/game/Spells/Spell.cpp | 15 +++++++++------ .../TrialOfTheChampion/boss_grand_champions.cpp | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index e3fb407d52c..d9abc15f4e5 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3483,7 +3483,7 @@ void Spell::update(uint32 difftime) { case SPELL_STATE_PREPARING: { - if (m_timer) + if (m_timer > 0) { if (difftime >= (uint32)m_timer) m_timer = 0; @@ -3498,7 +3498,7 @@ void Spell::update(uint32 difftime) } case SPELL_STATE_CASTING: { - if (m_timer > 0) + if (m_timer) { // check if there are alive targets left if (!UpdateChanneledTargetList()) @@ -3508,10 +3508,13 @@ void Spell::update(uint32 difftime) finish(); } - if (difftime >= (uint32)m_timer) - m_timer = 0; - else - m_timer -= difftime; + if (m_timer > 0) + { + if (difftime >= (uint32)m_timer) + m_timer = 0; + else + m_timer -= difftime; + } } if (m_timer == 0) diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index ece172c685b..2f6a01e73d7 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -840,7 +840,7 @@ public: { DoCast(target, SPELL_MULTI_SHOT); } - else if (target) + else { Map::PlayerList const& players = me->GetMap()->GetPlayers(); if (me->GetMap()->IsDungeon() && !players.isEmpty()) @@ -850,7 +850,7 @@ public: Player* player = itr->getSource(); if (player && !player->isGameMaster() && me->IsInRange(player, 5.0f, 30.0f, false)) { - DoCast(target, SPELL_MULTI_SHOT); + DoCast(player, SPELL_MULTI_SHOT); break; } } -- cgit v1.2.3 From c14e7ec385175479811886d8f08650a3775b679f Mon Sep 17 00:00:00 2001 From: root Date: Sat, 24 Dec 2011 23:44:51 +0100 Subject: Core/Spells: Permanent Feign Death will now also make the creature set its creature state passive --- src/server/scripts/Spells/spell_generic.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index af558d479a5..298e9b6410e 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -566,6 +566,9 @@ class spell_creature_permanent_feign_death : public SpellScriptLoader Unit* target = GetTarget(); target->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD); target->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH); + + if (target->GetTypeId() == TYPEID_UNIT) + target->ToCreature()->SetReactState(REACT_PASSIVE); } void Register() -- cgit v1.2.3 From 23b54b8416d0268bc721d3bf879d5a9be45cbe5f Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:04:26 +0100 Subject: Core/Quests: Script quest Missing Friends Closes #3604 --- sql/updates/world/2011_12_24_00_world_sai.sql | 10 +++++ src/server/scripts/World/go_scripts.cpp | 54 +++++++++++++++++++++++---- 2 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 sql/updates/world/2011_12_24_00_world_sai.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_24_00_world_sai.sql b/sql/updates/world/2011_12_24_00_world_sai.sql new file mode 100644 index 00000000000..fb5816bb737 --- /dev/null +++ b/sql/updates/world/2011_12_24_00_world_sai.sql @@ -0,0 +1,10 @@ +-- Scriptname for the cages +UPDATE `gameobject_template` SET `ScriptName`='go_veil_skith_cage' WHERE `entry` IN (185202,185203,185204,185205); + +-- Texts for Captive Child +DELETE FROM `creature_text` WHERE `entry`=22314; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(22314,0,0,"Woot!",12,0,100,0,0,0,"Captive Child"), +(22314,0,1,"I think those weird bird guys were going to eat us. Gross!",12,0,100,0,0,0,"Captive Child"), +(22314,0,2,"Yay! We're free!",12,0,100,0,0,0,"Captive Child"), +(22314,0,3,"Gross!",12,0,100,0,0,0,"Captive Child"); \ No newline at end of file diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 44c3ab9bdc9..4799b893286 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -16,13 +16,6 @@ * with this program. If not, see . */ -/* ScriptData -SDName: GO_Scripts -SD%Complete: 100 -SDComment: Quest support: 4285, 4287, 4288(crystal pylons), 4296, 6481, 10990, 10991, 10992, Field_Repair_Bot->Teaches spell 22704. Barov_journal->Teaches spell 26089, 12843, 12982, 2936. Soulwell -SDCategory: Game Objects -EndScriptData */ - /* ContentData go_cat_figurine (the "trap" version of GO, two different exist) go_northern_crystal_pylon @@ -48,6 +41,15 @@ go_table_theka go_soulwell go_bashir_crystalforge go_ethereal_teleport_pad +go_soulwell +go_dragonflayer_cage +go_tadpole_cage +go_black_cage +go_amberpine_outhouse +go_hive_pod +go_gjalerbron_cage +go_large_gjalerbron_cage +go_veil_skith_cage EndContentData */ #include "ScriptPCH.h" @@ -1179,6 +1181,7 @@ public: /*###### ## Quest 1126: Hive in the Tower +## go_hive_pod ######*/ enum eHives @@ -1278,6 +1281,42 @@ class go_large_gjalerbron_cage : public GameObjectScript } }; +/*######## +#### go_veil_skith_cage +#####*/ + +enum MissingFriends +{ + QUEST_MISSING_FRIENDS = 10852, + NPC_CAPTIVE_CHILD = 22314, + SAY_FREE = 0, +}; + +class go_veil_skith_cage : public GameObjectScript +{ + public: + go_veil_skith_cage() : GameObjectScript("go_veil_skith_cage") { } + + bool OnGossipHello(Player* player, GameObject* go) + { + if (player->GetQuestStatus(QUEST_MISSING_FRIENDS) == QUEST_STATUS_INCOMPLETE) + { + std::list ChildrenList; + GetCreatureListWithEntryInGrid(ChildrenList, go, NPC_CAPTIVE_CHILD, INTERACTION_DISTANCE); + for (std::list::const_iterator itr = ChildrenList.begin(); itr != ChildrenList.end(); ++itr) + { + go->UseDoorOrButton(); + player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID()); + (*itr)->ForcedDespawn(5000); + (*itr)->GetMotionMaster()->MovePoint(1, go->GetPositionX()+5, go->GetPositionY(), go->GetPositionZ()); + (*itr)->AI()->Talk(SAY_FREE); + (*itr)->GetMotionMaster()->Clear(); + } + } + return false; + } +}; + void AddSC_go_scripts() { new go_cat_figurine; @@ -1319,4 +1358,5 @@ void AddSC_go_scripts() new go_massive_seaforium_charge; new go_gjalerbron_cage; new go_large_gjalerbron_cage; + new go_veil_skith_cage; } -- cgit v1.2.3 From ef4608f07c8596c2436604e18d49ba8891af3191 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:13:28 +0100 Subject: Core/Quests: Fix an exploit in Red Snapper - Very Tasty! Also fix a silly codestyle typo in previous commit. Closes #3887 --- .../2011_12_25_00_world_spell_script_names.sql | 4 ++ src/server/scripts/Spells/spell_quest.cpp | 49 ++++++++++++++++++++++ src/server/scripts/World/go_scripts.cpp | 6 +-- 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 sql/updates/world/2011_12_25_00_world_spell_script_names.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_00_world_spell_script_names.sql b/sql/updates/world/2011_12_25_00_world_spell_script_names.sql new file mode 100644 index 00000000000..a4bf9aef5dc --- /dev/null +++ b/sql/updates/world/2011_12_25_00_world_spell_script_names.sql @@ -0,0 +1,4 @@ +UPDATE `item_template` SET `ScriptName`='' WHERE `entry`=23654; +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_q9452_cast_net'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(29866,'spell_q9452_cast_net'); \ No newline at end of file diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 3b2cc5f5e00..ecdbd582b76 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1026,6 +1026,54 @@ public: } }; +// http://old01.wowhead.com/quest=9452 - Red Snapper - Very Tasty! +enum RedSnapperVeryTasty +{ + SPELL_CAST_NET = 29866, + ITEM_RED_SNAPPER = 23614, + NPC_ANGRY_MURLOC = 17102, +}; + +class spell_q9452_cast_net: public SpellScriptLoader +{ + public: + spell_q9452_cast_net() : SpellScriptLoader("spell_q9452_cast_net") { } + + class spell_q9452_cast_net_SpellScript : public SpellScript + { + PrepareSpellScript(spell_q9452_cast_net_SpellScript) + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Player* caster = GetCaster()->ToPlayer(); + + if (!caster) + return; + + switch (urand(0, 2)) + { + case 0: case 1: + caster->AddItem(ITEM_RED_SNAPPER, 1); + break; + case 2: + if (Creature* murloc = caster->SummonCreature(NPC_ANGRY_MURLOC, caster->GetPositionX()+5, caster->GetPositionY(), caster->GetPositionZ(), 0.0f, TEMPSUMMON_MANUAL_DESPAWN, 120000)) + murloc->AI()->AttackStart(caster); + break; + } + } + + void Register() + { + OnEffectHit += SpellEffectFn(spell_q9452_cast_net_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_q9452_cast_net_SpellScript(); + } +}; + void AddSC_quest_spell_scripts() { new spell_q55_sacred_cleansing(); @@ -1050,4 +1098,5 @@ void AddSC_quest_spell_scripts() new spell_q12805_lifeblood_dummy(); new spell_q13280_13283_plant_battle_standard(); new spell_q14112_14145_chum_the_water(); + new spell_q9452_cast_net(); } diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 4799b893286..fad92ec1af5 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -1301,9 +1301,9 @@ class go_veil_skith_cage : public GameObjectScript { if (player->GetQuestStatus(QUEST_MISSING_FRIENDS) == QUEST_STATUS_INCOMPLETE) { - std::list ChildrenList; - GetCreatureListWithEntryInGrid(ChildrenList, go, NPC_CAPTIVE_CHILD, INTERACTION_DISTANCE); - for (std::list::const_iterator itr = ChildrenList.begin(); itr != ChildrenList.end(); ++itr) + std::list childrenList; + GetCreatureListWithEntryInGrid(childrenList, go, NPC_CAPTIVE_CHILD, INTERACTION_DISTANCE); + for (std::list::const_iterator itr = childrenList.begin(); itr != childrenList.end(); ++itr) { go->UseDoorOrButton(); player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID()); -- cgit v1.2.3 From b82eb200e80dff65f6d4c1f71d5ca3253dd59b48 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:20:56 +0100 Subject: DB/Quests: Script quest Raptor Captor. Yet another stupid mistake from previous commit, sorry. --- sql/updates/world/2011_12_25_00_world_sai.sql | 23 +++++++++++++++ src/server/scripts/World/item_scripts.cpp | 41 --------------------------- 2 files changed, 23 insertions(+), 41 deletions(-) create mode 100644 sql/updates/world/2011_12_25_00_world_sai.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_00_world_sai.sql b/sql/updates/world/2011_12_25_00_world_sai.sql new file mode 100644 index 00000000000..d0f1572d708 --- /dev/null +++ b/sql/updates/world/2011_12_25_00_world_sai.sql @@ -0,0 +1,23 @@ +-- Bloodfen Raptor SAI +SET @ENTRY := 4351; +SET @SPELL_ROPE := 42325; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,8,0,100,0,@SPELL_ROPE,0,0,0,33,23727,0,0,0,0,0,7,0,0,0,0,0,0,0,"Bloodfen Raptor - On Spellhit - Quest Credit"), +(@ENTRY,0,1,0,2,0,100,1,0,20,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodfen Raptor - At 20% HP - Say Line 0"); + +-- Bloodfen Screecher SAI +SET @ENTRY := 4352; +SET @SPELL_ROPE := 42325; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,8,0,100,0,@SPELL_ROPE,0,0,0,33,23727,0,0,0,0,0,7,0,0,0,0,0,0,0,"Bloodfen Screecher - On Spellhit - Quest Credit"), +(@ENTRY,0,1,0,2,0,100,1,0,20,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodfen Screecher - At 20% HP - Say Line 0"); + +-- Texts +DELETE FROM `creature_text` WHERE `entry` IN (4351,4352); +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(4351,0,0,"%s looks weak enough to capture.",16,0,100,0,0,0,"Bloodfen Raptor"), +(4352,0,0,"%s looks weak enough to capture.",16,0,100,0,0,0,"Bloodfen Screecher"); diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp index 4099c03384c..9bfa77271f5 100644 --- a/src/server/scripts/World/item_scripts.cpp +++ b/src/server/scripts/World/item_scripts.cpp @@ -24,7 +24,6 @@ SDCategory: Items EndScriptData */ /* ContentData -item_draenei_fishing_net(i23654) Hacklike implements chance to spawn item or creature item_nether_wraith_beacon(i31742) Summons creatures for quest Becoming a Spellfire Tailor (q10832) item_flying_machine(i34060, i34061) Engineering crafted flying machines item_gor_dreks_ointment(i30175) Protecting Our Own(q10488) @@ -80,45 +79,6 @@ public: } }; -/*##### -# item_draenei_fishing_net -#####*/ - -class item_draenei_fishing_net : public ItemScript -{ -public: - item_draenei_fishing_net() : ItemScript("item_draenei_fishing_net") { } - - //This is just a hack and should be removed from here. - //Creature/Item are in fact created before spell are sucessfully casted, without any checks at all to ensure proper/expected behavior. - bool OnUse(Player* player, Item* /*pItem*/, SpellCastTargets const& /*targets*/) - { - if (player->GetQuestStatus(9452) == QUEST_STATUS_INCOMPLETE) - { - if (urand(0, 99) < 35) - { - Creature* Murloc = player->SummonCreature(17102, player->GetPositionX(), player->GetPositionY()+20, player->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); - if (Murloc) - Murloc->AI()->AttackStart(player); - } - else - { - ItemPosCountVec dest; - uint32 itemId = 23614; - InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, 1); - if (msg == EQUIP_ERR_OK) - { - if (Item* item = player->StoreNewItem(dest, itemId, true)) - player->SendNewItem(item, 1, false, true); - } - else - player->SendEquipError(msg, NULL, NULL, itemId); - } - } - return false; - } -}; - /*##### # item_nether_wraith_beacon #####*/ @@ -452,7 +412,6 @@ public: void AddSC_item_scripts() { new item_only_for_flight(); - new item_draenei_fishing_net(); new item_nether_wraith_beacon(); new item_gor_dreks_ointment(); new item_incendiary_explosives(); -- cgit v1.2.3 From 8cec401f0c4c61bb69fc6353bc13e0b2c4582130 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:29:15 +0100 Subject: Core/Scripts: Script quest Nat's Bargain. Closes #3140. --- sql/updates/world/2011_12_24_00_world_misc.sql | 10 ++++++ sql/updates/world/2011_12_24_00_world_sai.sql | 10 ------ ...2011_12_25_00_world_areatrigger_scriptnames.sql | 3 ++ src/server/scripts/World/areatrigger_scripts.cpp | 37 ++++++++++++++++++++++ 4 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 sql/updates/world/2011_12_24_00_world_misc.sql delete mode 100644 sql/updates/world/2011_12_24_00_world_sai.sql create mode 100644 sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_24_00_world_misc.sql b/sql/updates/world/2011_12_24_00_world_misc.sql new file mode 100644 index 00000000000..fb5816bb737 --- /dev/null +++ b/sql/updates/world/2011_12_24_00_world_misc.sql @@ -0,0 +1,10 @@ +-- Scriptname for the cages +UPDATE `gameobject_template` SET `ScriptName`='go_veil_skith_cage' WHERE `entry` IN (185202,185203,185204,185205); + +-- Texts for Captive Child +DELETE FROM `creature_text` WHERE `entry`=22314; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(22314,0,0,"Woot!",12,0,100,0,0,0,"Captive Child"), +(22314,0,1,"I think those weird bird guys were going to eat us. Gross!",12,0,100,0,0,0,"Captive Child"), +(22314,0,2,"Yay! We're free!",12,0,100,0,0,0,"Captive Child"), +(22314,0,3,"Gross!",12,0,100,0,0,0,"Captive Child"); \ No newline at end of file diff --git a/sql/updates/world/2011_12_24_00_world_sai.sql b/sql/updates/world/2011_12_24_00_world_sai.sql deleted file mode 100644 index fb5816bb737..00000000000 --- a/sql/updates/world/2011_12_24_00_world_sai.sql +++ /dev/null @@ -1,10 +0,0 @@ --- Scriptname for the cages -UPDATE `gameobject_template` SET `ScriptName`='go_veil_skith_cage' WHERE `entry` IN (185202,185203,185204,185205); - --- Texts for Captive Child -DELETE FROM `creature_text` WHERE `entry`=22314; -INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES -(22314,0,0,"Woot!",12,0,100,0,0,0,"Captive Child"), -(22314,0,1,"I think those weird bird guys were going to eat us. Gross!",12,0,100,0,0,0,"Captive Child"), -(22314,0,2,"Yay! We're free!",12,0,100,0,0,0,"Captive Child"), -(22314,0,3,"Gross!",12,0,100,0,0,0,"Captive Child"); \ No newline at end of file diff --git a/sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql b/sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql new file mode 100644 index 00000000000..4a66326ead5 --- /dev/null +++ b/sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql @@ -0,0 +1,3 @@ +DELETE FROM `areatrigger_scripts` WHERE `entry`=4752; +INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES +(4752,'at_nats_landing'); \ No newline at end of file diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index 517746dac55..b1d1b97f21b 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -29,6 +29,7 @@ at_legion_teleporter 4560 Teleporter TO Invasion Point: Cataclysm at_stormwright_shelf q12741 at_last_rites q12019 at_sholazar_waygate q12548 +at_nats_landing q11209 EndContentData */ #include "ScriptPCH.h" @@ -257,6 +258,41 @@ class AreaTrigger_at_sholazar_waygate : public AreaTriggerScript } }; +/*###### +## at_nats_landing +######*/ + +enum NatsLanding +{ + QUEST_NATS_BARGAIN = 11209, + SPELL_FISH_PASTE = 42644, + NPC_LURKING_SHARK = 23928 +}; + +class AreaTrigger_at_nats_landing : public AreaTriggerScript +{ + public: + AreaTrigger_at_nats_landing() : AreaTriggerScript("at_nats_landing") { } + + bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) + { + if (!player->isAlive() || !player->HasAura(SPELL_FISH_PASTE)) + return false; + + if (player->GetQuestStatus(QUEST_NATS_BARGAIN) == QUEST_STATUS_INCOMPLETE) + { + if (!player->FindNearestCreature(NPC_LURKING_SHARK, 20.0f)) + { + if (Creature* shark = player->SummonCreature(NPC_LURKING_SHARK, -4246.243f, -3922.356f, -7.488f, 5.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 100000)) + shark->AI()->AttackStart(player); + + return false; + } + } + return true; + } +}; + void AddSC_areatrigger_scripts() { new AreaTrigger_at_coilfang_waterfall(); @@ -265,4 +301,5 @@ void AddSC_areatrigger_scripts() new AreaTrigger_at_scent_larkorwi(); new AreaTrigger_at_last_rites(); new AreaTrigger_at_sholazar_waygate(); + new AreaTrigger_at_nats_landing(); } -- cgit v1.2.3 From c3e527da6d0e5b6fcf7c7faadfd441c2f0a941bc Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:36:17 +0100 Subject: Core/Quests: Script quest Captain Tyralius. Closes #3091. --- sql/updates/world/2011_12_25_00_world_misc.sql | 5 ++++ src/server/scripts/Outland/netherstorm.cpp | 36 ++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 sql/updates/world/2011_12_25_00_world_misc.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_00_world_misc.sql b/sql/updates/world/2011_12_25_00_world_misc.sql new file mode 100644 index 00000000000..4096bbf35c7 --- /dev/null +++ b/sql/updates/world/2011_12_25_00_world_misc.sql @@ -0,0 +1,5 @@ +UPDATE `gameobject_template` SET `ScriptName`='go_captain_tyralius_prison' WHERE `entry`=184588; +UPDATE `quest_template` SET `ReqSpellCast1`=0 WHERE `entry`=10422; +DELETE FROM `creature_text` WHERE `entry`=20787; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(20787,0,0,"You've saved me, fleshling! Ameer will hear of this noble act.",12,0,100,0,0,0,"Captain Tyralius"); \ No newline at end of file diff --git a/src/server/scripts/Outland/netherstorm.cpp b/src/server/scripts/Outland/netherstorm.cpp index 5f2626c0039..f892169f7ae 100644 --- a/src/server/scripts/Outland/netherstorm.cpp +++ b/src/server/scripts/Outland/netherstorm.cpp @@ -29,6 +29,7 @@ go_manaforge_control_console npc_commander_dawnforge npc_bessy npc_maxx_a_million +go_captain_tyralius_prison EndContentData */ #include "ScriptPCH.h" @@ -1046,6 +1047,40 @@ public: } }; +/*###### +## go_captain_tyralius_prison +######*/ + +enum CaptainTyralius +{ + NPC_CAPTAIN_TYRALIUS = 20787, + SAY_FREE = 0, +}; + +class go_captain_tyralius_prison : public GameObjectScript +{ + public: + go_captain_tyralius_prison() : GameObjectScript("go_captain_tyralius_prison") { } + + bool OnGossipHello(Player* player, GameObject* go) + { + if (Creature* tyralius = go->FindNearestCreature(NPC_CAPTAIN_TYRALIUS, 1.0f)) + { + if (tyralius) + { + go->UseDoorOrButton(); + + if (player) + player->KilledMonsterCredit(NPC_CAPTAIN_TYRALIUS, 0); + + tyralius->AI()->Talk(SAY_FREE); + tyralius->ForcedDespawn(8000); + } + } + return true; + } +}; + void AddSC_netherstorm() { new go_manaforge_control_console(); @@ -1056,4 +1091,5 @@ void AddSC_netherstorm() new mob_phase_hunter(); new npc_bessy(); new npc_maxx_a_million_escort(); + new go_captain_tyralius_prison(); } -- cgit v1.2.3 From f2ad757acdddbf98f8b18bacba3debc74d1b480b Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:43:26 +0100 Subject: Core/Scripts: Fix quest Heroes of Old. Closes #3703 --- sql/updates/world/2011_12_25_00_world_misc.sql | 8 ++++++-- src/server/scripts/EasternKingdoms/blasted_lands.cpp | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_00_world_misc.sql b/sql/updates/world/2011_12_25_00_world_misc.sql index 4096bbf35c7..22effda3d04 100644 --- a/sql/updates/world/2011_12_25_00_world_misc.sql +++ b/sql/updates/world/2011_12_25_00_world_misc.sql @@ -1,5 +1,9 @@ UPDATE `gameobject_template` SET `ScriptName`='go_captain_tyralius_prison' WHERE `entry`=184588; -UPDATE `quest_template` SET `ReqSpellCast1`=0 WHERE `entry`=10422; +UPDATE `quest_template` SET `RequiredSpellCast1`=0 WHERE `id`=10422; DELETE FROM `creature_text` WHERE `entry`=20787; INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES -(20787,0,0,"You've saved me, fleshling! Ameer will hear of this noble act.",12,0,100,0,0,0,"Captain Tyralius"); \ No newline at end of file +(20787,0,0,"You've saved me, fleshling! Ameer will hear of this noble act.",12,0,100,0,0,0,"Captain Tyralius"); + +-- Heroes of Old +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `entry`=2702; +DELETE FROM `quest_start_scripts` WHERE `id`=2702; diff --git a/src/server/scripts/EasternKingdoms/blasted_lands.cpp b/src/server/scripts/EasternKingdoms/blasted_lands.cpp index 048fd8dfd2a..38a577b9ba9 100644 --- a/src/server/scripts/EasternKingdoms/blasted_lands.cpp +++ b/src/server/scripts/EasternKingdoms/blasted_lands.cpp @@ -72,6 +72,13 @@ public: /*###### ## npc_fallen_hero_of_horde ######*/ + +enum HeroesOfOld +{ + QUEST_HEROES_OF_OLD = 2702, + NPC_THUND_SPLITHOOF = 7750, +}; + #define GOSSIP_H_F1 "Why are you here?" #define GOSSIP_H_F2 "Continue story..." @@ -159,6 +166,14 @@ public: return true; } + bool OnQuestAccept(Player* /*player*/, Creature* creature, Quest const* quest) + { + if (quest->GetQuestId() == QUEST_HEROES_OF_OLD) + creature->SummonCreature(NPC_THUND_SPLITHOOF, -10630.3f, -2987.05f, 28.96f, 4.54f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 9000000); + + return true; + } + }; void AddSC_blasted_lands() -- cgit v1.2.3 From 49e10f992a7e73e4afcc627cfbdf0dc3db28ef1a Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:52:01 +0100 Subject: Scripts/Quests: Zuhuled the Wacked And obviously, some typo's. Closes #3704 --- sql/updates/world/2011_12_25_00_world_misc.sql | 2 +- sql/updates/world/2011_12_25_01_world_misc.sql | 3 +++ src/server/scripts/Outland/shadowmoon_valley.cpp | 25 ++++++++++++++---------- src/server/scripts/World/go_scripts.cpp | 4 ++-- 4 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 sql/updates/world/2011_12_25_01_world_misc.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_00_world_misc.sql b/sql/updates/world/2011_12_25_00_world_misc.sql index 22effda3d04..8f1d3c44ceb 100644 --- a/sql/updates/world/2011_12_25_00_world_misc.sql +++ b/sql/updates/world/2011_12_25_00_world_misc.sql @@ -5,5 +5,5 @@ INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`pr (20787,0,0,"You've saved me, fleshling! Ameer will hear of this noble act.",12,0,100,0,0,0,"Captain Tyralius"); -- Heroes of Old -UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `entry`=2702; +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=2702; DELETE FROM `quest_start_scripts` WHERE `id`=2702; diff --git a/sql/updates/world/2011_12_25_01_world_misc.sql b/sql/updates/world/2011_12_25_01_world_misc.sql new file mode 100644 index 00000000000..9e4d7e6c058 --- /dev/null +++ b/sql/updates/world/2011_12_25_01_world_misc.sql @@ -0,0 +1,3 @@ +-- Zuhuled the Wacked +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=10866; +DELETE FROM `quest_start_scripts` WHERE `id`=10866; diff --git a/src/server/scripts/Outland/shadowmoon_valley.cpp b/src/server/scripts/Outland/shadowmoon_valley.cpp index 610cf684a77..ecbdb921567 100644 --- a/src/server/scripts/Outland/shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/shadowmoon_valley.cpp @@ -635,26 +635,31 @@ public: # npc_karynaku ####*/ -enum eKarynaku +enum Karynaku { QUEST_ALLY_OF_NETHER = 10870, + QUEST_ZUHULED_THE_WACK = 10866, - TAXI_PATH_ID = 649 + NPC_ZUHULED_THE_WACKED = 11980, + + TAXI_PATH_ID = 649, }; class npc_karynaku : public CreatureScript { -public: - npc_karynaku() : CreatureScript("npc_karynaku") { } + public: + npc_karynaku() : CreatureScript("npc_karynaku") { } - bool OnQuestAccept(Player* player, Creature* /*creature*/, Quest const* quest) - { - if (quest->GetQuestId() == QUEST_ALLY_OF_NETHER) - player->ActivateTaxiPathTo(TAXI_PATH_ID); //player->ActivateTaxiPathTo(649); + bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest) + { + if (quest->GetQuestId() == QUEST_ALLY_OF_NETHER) + player->ActivateTaxiPathTo(TAXI_PATH_ID); - return true; - } + if (quest->GetQuestId() == QUEST_ZUHULED_THE_WACK) + creature->SummonCreature(NPC_ZUHULED_THE_WACKED, -4204.94f, 316.397f, 122.508f, 1.309f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 300000); + return true; + } }; /*#### diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index fad92ec1af5..e93dd2751e6 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -1289,7 +1289,7 @@ enum MissingFriends { QUEST_MISSING_FRIENDS = 10852, NPC_CAPTIVE_CHILD = 22314, - SAY_FREE = 0, + SAY_FREE_0 = 0, }; class go_veil_skith_cage : public GameObjectScript @@ -1309,7 +1309,7 @@ class go_veil_skith_cage : public GameObjectScript player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID()); (*itr)->ForcedDespawn(5000); (*itr)->GetMotionMaster()->MovePoint(1, go->GetPositionX()+5, go->GetPositionY(), go->GetPositionZ()); - (*itr)->AI()->Talk(SAY_FREE); + (*itr)->AI()->Talk(SAY_FREE_0); (*itr)->GetMotionMaster()->Clear(); } } -- cgit v1.2.3 From 173fb48fe2ed2dd63782a93629c4c4da22ccb9d4 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 01:05:00 +0100 Subject: Core/Quests: Script quest Portals to Legion. Core/Desolace: Clean up some terrible code.. --- .../2011_12_25_01_world_gameobject_scriptnames.sql | 1 + src/server/scripts/Kalimdor/desolace.cpp | 53 ++++++++++++++++++---- 2 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 sql/updates/world/2011_12_25_01_world_gameobject_scriptnames.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_01_world_gameobject_scriptnames.sql b/sql/updates/world/2011_12_25_01_world_gameobject_scriptnames.sql new file mode 100644 index 00000000000..c545550e129 --- /dev/null +++ b/sql/updates/world/2011_12_25_01_world_gameobject_scriptnames.sql @@ -0,0 +1 @@ +UPDATE `gameobject_template` SET `ScriptName`='go_demon_portal' WHERE `entry` IN (177243,177365,177369,177397,177398,177399,177400,177366,177367,177368); diff --git a/src/server/scripts/Kalimdor/desolace.cpp b/src/server/scripts/Kalimdor/desolace.cpp index 71372f1d9e4..5cc32657f2f 100644 --- a/src/server/scripts/Kalimdor/desolace.cpp +++ b/src/server/scripts/Kalimdor/desolace.cpp @@ -25,6 +25,9 @@ EndScriptData */ /* ContentData npc_aged_dying_ancient_kodo +go_iruxos +npc_dalinda_malem +go_demon_portal EndContentData */ #include "ScriptPCH.h" @@ -168,22 +171,28 @@ public: }; /*###### -## go_iruxos. Quest 5381 +## go_iruxos +## Hand of Iruxos ######*/ +enum +{ + QUEST_HAND_IRUXOS = 5381, + NPC_DEMON_SPIRIT = 11876, +}; + class go_iruxos : public GameObjectScript { -public: - go_iruxos() : GameObjectScript("go_iruxos") { } + public: + go_iruxos() : GameObjectScript("go_iruxos") { } - bool OnGossipHello(Player* player, GameObject* /*pGO*/) - { + bool OnGossipHello(Player* player, GameObject* /*go*/) + { if (player->GetQuestStatus(5381) == QUEST_STATUS_INCOMPLETE) - player->SummonCreature(11876, player->GetInnPosX(), player->GetInnPosY(), player->GetInnPosZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); + player->SummonCreature(11876, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); return true; - } - + } }; /*###### @@ -254,7 +263,34 @@ public: DoMeleeAttackIfReady(); } }; +}; + +/*###### +## go_demon_portal +######*/ +enum DemonPortal +{ + NPC_DEMON_GUARDIAN = 11937, + + QUEST_PORTAL_OF_THE_LEGION = 5581, +}; + +class go_demon_portal : public GameObjectScript +{ + public: + go_demon_portal() : GameObjectScript("go_demon_portal") { } + + bool OnGossipHello(Player* player, GameObject* go) + { + if (player->GetQuestStatus(QUEST_PORTAL_OF_THE_LEGION) == QUEST_STATUS_INCOMPLETE) + { + if (Creature* guardian = player->SummonCreature(NPC_DEMON_GUARDIAN, GO->GetPositionX(), GO->GetPositionY(), GO->GetPositionZ(), 0.0f, TEMPSUMMON_DEAD_DESPAWN, 0)) + guardian->AI()->AttackStart(player); + } + + return true; + } }; void AddSC_desolace() @@ -262,4 +298,5 @@ void AddSC_desolace() new npc_aged_dying_ancient_kodo(); new go_iruxos(); new npc_dalinda(); + new go_demon_portal(); } -- cgit v1.2.3 From 275aa8a7d851b69f6dc01dda99ab914dd7805b64 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 01:21:09 +0100 Subject: DB/Miscellaneous: Implement humans transforming into worgens at night inside Pyrewood Village. And yet again some silly typo's, sorry guys. Closes #3062 --- .../2011_12_25_00_world_gameobject_scriptnames.sql | 1 + .../2011_12_25_01_world_gameobject_scriptnames.sql | 1 - sql/updates/world/2011_12_25_02_world_misc.sql | 89 ++++++++++++++++++++++ src/server/scripts/Kalimdor/desolace.cpp | 8 +- src/server/scripts/Outland/netherstorm.cpp | 12 +-- 5 files changed, 98 insertions(+), 13 deletions(-) create mode 100644 sql/updates/world/2011_12_25_00_world_gameobject_scriptnames.sql delete mode 100644 sql/updates/world/2011_12_25_01_world_gameobject_scriptnames.sql create mode 100644 sql/updates/world/2011_12_25_02_world_misc.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_00_world_gameobject_scriptnames.sql b/sql/updates/world/2011_12_25_00_world_gameobject_scriptnames.sql new file mode 100644 index 00000000000..c545550e129 --- /dev/null +++ b/sql/updates/world/2011_12_25_00_world_gameobject_scriptnames.sql @@ -0,0 +1 @@ +UPDATE `gameobject_template` SET `ScriptName`='go_demon_portal' WHERE `entry` IN (177243,177365,177369,177397,177398,177399,177400,177366,177367,177368); diff --git a/sql/updates/world/2011_12_25_01_world_gameobject_scriptnames.sql b/sql/updates/world/2011_12_25_01_world_gameobject_scriptnames.sql deleted file mode 100644 index c545550e129..00000000000 --- a/sql/updates/world/2011_12_25_01_world_gameobject_scriptnames.sql +++ /dev/null @@ -1 +0,0 @@ -UPDATE `gameobject_template` SET `ScriptName`='go_demon_portal' WHERE `entry` IN (177243,177365,177369,177397,177398,177399,177400,177366,177367,177368); diff --git a/sql/updates/world/2011_12_25_02_world_misc.sql b/sql/updates/world/2011_12_25_02_world_misc.sql new file mode 100644 index 00000000000..ee2fd9c1964 --- /dev/null +++ b/sql/updates/world/2011_12_25_02_world_misc.sql @@ -0,0 +1,89 @@ +-- Make the human versions in Pyrewood Village despawn during night and the worgens spawn during night +SET @GUID := 152280; +DELETE FROM `game_event_creature` WHERE `eventEntry`=25; +INSERT INTO `game_event_creature` (`eventEntry`,`guid`) VALUES +-- Humans +(-25,17908),(-25,18404),(-25,18408), +(-25,19002),(-25,19005),(-25,19084), +(-25,19219),(-25,19222),(-25,19223), +(-25,19224),(-25,19227),(-25,19229), +(-25,19316),(-25,19343),(-25,18307), +(-25,17911),(-25,17910),(-25,18236), +(-25,18237),(-25,18239),(-25,18291), +(-25,18306),(-25,18350),(-25,18400), +(-25,18411),(-25,18413),(-25,18996), +(-25,19008),(-25,19012),(-25,19015), +(-25,19019),(-25,19220),(-25,19228), +(-25,17663),(-25,17905),(-25,18220), +(-25,18221),(-25,18238),(-25,18310), +(-25,18354),(-25,18355),(-25,18405), +(-25,18407),(-25,18409),(-25,19007), +(-25,18235),(-25,18309), +-- Worgens +(25,@GUID+1),(25,@GUID+2),(25,@GUID+3), +(25,@GUID+4),(25,@GUID+5),(25,@GUID+6), +(25,@GUID+7),(25,@GUID+8),(25,@GUID+9), +(25,@GUID+10),(25,@GUID+11),(25,@GUID+12), +(25,@GUID+13),(25,@GUID+14),(25,@GUID+15), +(25,@GUID+16),(25,@GUID+17),(25,@GUID+18), +(25,@GUID+19),(25,@GUID+20),(25,@GUID+21), +(25,@GUID+22),(25,@GUID+23),(25,@GUID+24), +(25,@GUID+25),(25,@GUID+26),(25,@GUID+27), +(25,@GUID+28),(25,@GUID+29),(25,@GUID+30), +(25,@GUID+31),(25,@GUID+32),(25,@GUID+33), +(25,@GUID+34),(25,@GUID+35),(25,@GUID+36), +(25,@GUID+37),(25,@GUID+38),(25,@GUID+39), +(25,@GUID+40),(25,@GUID+41),(25,@GUID+42), +(25,@GUID+43),(25,@GUID+44),(25,@GUID+45), +(25,@GUID+46),(25,@GUID+0); + +-- Spawn all Moonrage versions of the humans +DELETE FROM `creature` WHERE `id` IN (3533,3531,3529,1896,1893,1892); +INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES +(@GUID+0,3533,0,1,1,0,-408.091,1604.03,18.2868,5.5676,600,0,0,300,0,0,0,0,0), +(@GUID+1,3531,0,1,1,0,-360.278,1495.03,17.196,0.830526,600,0,0,328,0,0,0,0,0), +(@GUID+2,3529,0,1,1,0,-345.967,1501.4,18.9875,0.942478,600,0,0,328,0,0,0,0,0), +(@GUID+3,1896,0,1,1,0,-327.462,1555.21,25.2491,1.61376,600,0,0,276,295,0,0,0,0), +(@GUID+4,1896,0,1,1,0,-407.955,1451.33,27.0859,0.767945,600,0,0,276,295,0,0,0,0), +(@GUID+5,1896,0,1,1,0,-391.907,1432.23,27.0313,6.07375,600,0,0,276,295,0,0,0,0), +(@GUID+6,1896,0,1,1,0,-344.082,1504.01,18.7918,4.18879,600,0,0,276,295,0,0,0,0), +(@GUID+7,1896,0,1,1,0,-329.456,1545.74,30.1367,2.26893,600,0,0,276,295,0,0,0,0), +(@GUID+8,1896,0,1,1,0,-414.124,1581.03,19.7275,6.10865,600,0,0,276,295,0,0,0,0), +(@GUID+9,1896,0,1,1,0,-413.706,1579.64,24.2994,2.9861,600,0,0,276,295,0,0,0,0), +(@GUID+10,1896,0,1,1,0,-423.094,1578.33,24.3098,2.98749,600,0,0,276,295,0,0,0,0), +(@GUID+11,1896,0,1,1,0,-411.947,1517.76,19.7711,4.86947,600,0,0,276,295,0,0,0,0), +(@GUID+12,1896,0,1,1,0,-424.202,1543.84,18.5687,6.17846,600,0,0,276,295,0,0,0,0), +(@GUID+13,1896,0,1,1,0,-397.475,1543.61,17.1712,3.0459,600,5,0,276,295,1,0,0,0), +(@GUID+14,1896,0,1,1,0,-378.435,1625.51,16.8077,0.694863,600,3,0,276,295,1,0,0,0), +(@GUID+15,1893,0,1,1,0,-404.028,1460.9,31.7653,5.84685,600,0,0,300,0,0,0,0,0), +(@GUID+16,1893,0,1,1,0,-410.983,1453.18,31.679,5.59007,600,5,0,300,0,1,0,0,0), +(@GUID+17,1893,0,1,1,0,-333.219,1548.41,25.2864,4.7729,600,0,0,300,0,0,0,0,0), +(@GUID+18,1893,0,1,1,0,-339.031,1547.76,30.0369,3.83411,600,3,0,300,0,1,0,0,0), +(@GUID+19,1893,0,1,1,0,-341.711,1553.34,24.5273,3.26377,600,0,0,300,0,0,0,0,0), +(@GUID+20,1893,0,1,1,0,-380.605,1435.24,25.7369,5.98648,600,0,0,300,0,0,0,0,0), +(@GUID+21,1893,0,1,1,0,-378.287,1655.98,10.346,2.89725,600,3,0,300,0,1,0,0,0), +(@GUID+22,1893,0,1,1,0,-411.642,1509.01,19.8575,1.55334,600,0,0,300,0,0,0,0,0), +(@GUID+23,1893,0,1,1,0,-390.535,1466.63,25.9869,5.34071,600,0,0,300,0,0,0,0,0), +(@GUID+24,1893,0,1,1,0,-391.615,1601.72,17.1706,4.86947,600,0,0,300,0,0,0,0,0), +(@GUID+25,1893,0,1,1,0,-355.263,1580.06,18.0622,0.078739,600,0,0,300,0,0,0,0,0), +(@GUID+26,1893,0,1,1,0,-442.388,1539.5,19.6376,4.53468,600,5,0,300,0,1,0,0,0), +(@GUID+27,1893,0,1,1,0,-389.73,1634.41,17.4309,6.20095,600,0,0,300,0,0,0,0,0), +(@GUID+28,1893,0,1,1,0,-385.558,1618.24,24.2887,4.07713,600,3,0,300,0,1,0,0,0), +(@GUID+29,1893,0,1,1,0,-385.776,1632.95,24.2887,3.83402,600,0,0,300,0,0,0,0,0), +(@GUID+30,1893,0,1,1,0,-384.391,1560.98,17.1156,2.65866,600,5,0,300,0,1,0,0,0), +(@GUID+31,1893,0,1,1,0,-420.551,1544.65,18.3187,2.70724,600,0,0,300,0,2,0,0,0), +(@GUID+32,1893,0,1,1,0,-372.427,1611.08,24.3721,1.32645,600,0,0,300,0,0,0,0,0), +(@GUID+33,1892,0,1,1,0,-405.033,1458.8,27.0968,0.15708,600,0,0,300,0,0,0,0,0), +(@GUID+34,1892,0,1,1,0,-350.427,1448.5,24.3665,4.72984,600,0,0,300,0,0,0,0,0), +(@GUID+35,1892,0,1,1,0,-370.983,1576.35,16.981,1.98656,600,0,0,300,0,2,0,0,0), +(@GUID+36,1892,0,1,1,0,-377.63,1491.95,18.4887,5.32325,600,0,0,300,0,0,0,0,0), +(@GUID+37,1892,0,1,1,0,-381.301,1653.14,17.7911,4.4855,600,0,0,300,0,0,0,0,0), +(@GUID+38,1892,0,1,1,0,-354.378,1421.62,28.2597,5.14872,600,0,0,300,0,0,0,0,0), +(@GUID+39,1892,0,1,1,0,-432.435,1531.27,18.7313,4.20121,600,5,0,300,0,1,0,0,0), +(@GUID+40,1892,0,1,1,0,-350.822,1606.93,18.0028,3.78911,600,0,0,300,0,0,0,0,0), +(@GUID+41,1892,0,1,1,0,-416.268,1576.92,19.5441,3.61468,600,0,0,300,0,0,0,0,0), +(@GUID+42,1892,0,1,1,0,-439.617,1517.84,19.5619,3.33314,600,5,0,300,0,1,0,0,0), +(@GUID+43,1892,0,1,1,0,-358.11,1528.2,24.9468,1.18862,600,0,0,300,0,0,0,0,0), +(@GUID+44,1892,0,1,1,0,-433.404,1564.13,19.7291,1.48262,600,5,0,300,0,1,0,0,0), +(@GUID+45,1892,0,1,1,0,-363.818,1545.45,24.4813,3.24746,600,0,0,300,0,0,0,0,0), +(@GUID+46,1892,0,1,1,0,-345.242,1601.84,17.0845,2.23485,600,0,0,300,0,0,0,0,0); diff --git a/src/server/scripts/Kalimdor/desolace.cpp b/src/server/scripts/Kalimdor/desolace.cpp index 5cc32657f2f..3d023b93dc2 100644 --- a/src/server/scripts/Kalimdor/desolace.cpp +++ b/src/server/scripts/Kalimdor/desolace.cpp @@ -186,10 +186,10 @@ class go_iruxos : public GameObjectScript public: go_iruxos() : GameObjectScript("go_iruxos") { } - bool OnGossipHello(Player* player, GameObject* /*go*/) + bool OnGossipHello(Player* player, GameObject* go) { - if (player->GetQuestStatus(5381) == QUEST_STATUS_INCOMPLETE) - player->SummonCreature(11876, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); + if (player->GetQuestStatus(QUEST_HAND_IRUXOS) == QUEST_STATUS_INCOMPLETE) + player->SummonCreature(NPC_DEMON_SPIRIT, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); return true; } @@ -285,7 +285,7 @@ class go_demon_portal : public GameObjectScript { if (player->GetQuestStatus(QUEST_PORTAL_OF_THE_LEGION) == QUEST_STATUS_INCOMPLETE) { - if (Creature* guardian = player->SummonCreature(NPC_DEMON_GUARDIAN, GO->GetPositionX(), GO->GetPositionY(), GO->GetPositionZ(), 0.0f, TEMPSUMMON_DEAD_DESPAWN, 0)) + if (Creature* guardian = player->SummonCreature(NPC_DEMON_GUARDIAN, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), 0.0f, TEMPSUMMON_DEAD_DESPAWN, 0)) guardian->AI()->AttackStart(player); } diff --git a/src/server/scripts/Outland/netherstorm.cpp b/src/server/scripts/Outland/netherstorm.cpp index f892169f7ae..e5ee8d19c59 100644 --- a/src/server/scripts/Outland/netherstorm.cpp +++ b/src/server/scripts/Outland/netherstorm.cpp @@ -1066,16 +1066,12 @@ class go_captain_tyralius_prison : public GameObjectScript { if (Creature* tyralius = go->FindNearestCreature(NPC_CAPTAIN_TYRALIUS, 1.0f)) { - if (tyralius) - { - go->UseDoorOrButton(); + go->UseDoorOrButton(); - if (player) - player->KilledMonsterCredit(NPC_CAPTAIN_TYRALIUS, 0); + player->KilledMonsterCredit(NPC_CAPTAIN_TYRALIUS, 0); - tyralius->AI()->Talk(SAY_FREE); - tyralius->ForcedDespawn(8000); - } + tyralius->AI()->Talk(SAY_FREE); + tyralius->ForcedDespawn(8000); } return true; } -- cgit v1.2.3 From 0a112a2f45c5d021af4414fec717f1a0362a36e4 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 01:29:35 +0100 Subject: Scripts/Quests: Script quests Down At the Docks, Gateway to the Frontier, Lordaeron Throne Room, Bought of Eternals, Spooky Lighthouse, Stonewrought Dam, Dark Portal (A/H) Closes #3322 Closes #1428 Closes #1403 Closes #1387 --- ...2011_12_25_01_world_areatrigger_scriptnames.sql | 9 +++ src/server/scripts/World/areatrigger_scripts.cpp | 74 +++++++++++++++++++++- 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql b/sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql new file mode 100644 index 00000000000..ebed9976f44 --- /dev/null +++ b/sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql @@ -0,0 +1,9 @@ +DELETE FROM `areatrigger_scripts` WHERE `ScriptName`='at_bring_your_orphan_to'; +INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES +(3551,'at_bring_your_orphan_to'), +(3549,'at_bring_your_orphan_to'), +(3547,'at_bring_your_orphan_to'), +(3546,'at_bring_your_orphan_to'), +(3552,'at_bring_your_orphan_to'), +(3548,'at_bring_your_orphan_to'), +(4356,'at_bring_your_orphan_to'); diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index b1d1b97f21b..84af6273070 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -29,7 +29,8 @@ at_legion_teleporter 4560 Teleporter TO Invasion Point: Cataclysm at_stormwright_shelf q12741 at_last_rites q12019 at_sholazar_waygate q12548 -at_nats_landing q11209 +at_nats_landing q11209 +at_bring_your_orphan_to q910 q910 q1800 q1479 q1687 q1558 q10951 q10952 EndContentData */ #include "ScriptPCH.h" @@ -293,6 +294,76 @@ class AreaTrigger_at_nats_landing : public AreaTriggerScript } }; +/*###### +## at_bring_your_orphan_to +######*/ + +enum BringYourOrphanTo +{ + QUEST_DOWN_AT_THE_DOCKS = 910, + QUEST_GATEWAY_TO_THE_FRONTIER = 911, + QUEST_LORDAERON_THRONE_ROOM = 1800, + QUEST_BOUGHT_OF_ETERNALS = 1479, + QUEST_SPOOKY_LIGHTHOUSE = 1687, + QUEST_STONEWROUGHT_DAM = 1558, + QUEST_DARK_PORTAL_H = 10951, + QUEST_DARK_PORTAL_A = 10952, + + AT_DOWN_AT_THE_DOCKS = 3551, + AT_GATEWAY_TO_THE_FRONTIER = 3549, + AT_LORDAERON_THRONE_ROOM = 3547, + AT_BOUGHT_OF_ETERNALS = 3546, + AT_SPOOKY_LIGHTHOUSE = 3552, + AT_STONEWROUGHT_DAM = 3548, + AT_DARK_PORTAL = 4356, + + AURA_ORPHAN_OUT = 58818, +}; + +class AreaTrigger_at_bring_your_orphan_to : public AreaTriggerScript +{ + public: + AreaTrigger_at_bring_your_orphan_to() : AreaTriggerScript("at_bring_your_orphan_to") { } + + bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) + { + uint32 questId = 0; + + if (player->isDead() || !player->HasAura(AURA_ORPHAN_OUT)) + return false; + + switch (trigger->id) + { + case AT_DOWN_AT_THE_DOCKS: + questId = QUEST_DOWN_AT_THE_DOCKS; + break; + case AT_GATEWAY_TO_THE_FRONTIER: + questId = QUEST_GATEWAY_TO_THE_FRONTIER; + break; + case AT_LORDAERON_THRONE_ROOM: + questId = QUEST_LORDAERON_THRONE_ROOM; + break; + case AT_BOUGHT_OF_ETERNALS: + questId = QUEST_BOUGHT_OF_ETERNALS; + break; + case AT_SPOOKY_LIGHTHOUSE: + questId = QUEST_SPOOKY_LIGHTHOUSE; + break; + case AT_STONEWROUGHT_DAM: + questId = QUEST_STONEWROUGHT_DAM; + break; + case AT_DARK_PORTAL: + questId = player->GetTeam() == ALLIANCE ? QUEST_DARK_PORTAL_A : QUEST_DARK_PORTAL_H; + break; + } + + if (questId && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) + player->AreaExploredOrEventHappens(questId); + + return true; + } +}; + void AddSC_areatrigger_scripts() { new AreaTrigger_at_coilfang_waterfall(); @@ -302,4 +373,5 @@ void AddSC_areatrigger_scripts() new AreaTrigger_at_last_rites(); new AreaTrigger_at_sholazar_waygate(); new AreaTrigger_at_nats_landing(); + new AreaTrigger_at_bring_your_orphan_to(); } -- cgit v1.2.3 From 78ac79220f7ac9bba6e2fec181e6c124475df1b8 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 01:47:02 +0100 Subject: Scripts/Miscellaneous: Script Brewfest welcome areatriggers. Texts were already added in 0a3a961211a0f1c82b0f75df2aab6f7d49855337. Closes #3615 --- ...2011_12_25_02_world_areatrigger_scriptnames.sql | 5 ++ src/server/scripts/World/areatrigger_scripts.cpp | 57 ++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql b/sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql new file mode 100644 index 00000000000..19c304dcfe9 --- /dev/null +++ b/sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql @@ -0,0 +1,5 @@ +-- Areatrigger scriptname for Brewfest +DELETE FROM `areatrigger_scripts` WHERE `entry` IN (4829,4820); +INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES +(4829,'at_brewfest'), -- Durotar +(4820,'at_brewfest'); -- Dun Morogh \ No newline at end of file diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index 84af6273070..e9ddfa43d6d 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -31,6 +31,7 @@ at_last_rites q12019 at_sholazar_waygate q12548 at_nats_landing q11209 at_bring_your_orphan_to q910 q910 q1800 q1479 q1687 q1558 q10951 q10952 +at_brewfest EndContentData */ #include "ScriptPCH.h" @@ -364,6 +365,61 @@ class AreaTrigger_at_bring_your_orphan_to : public AreaTriggerScript } }; +/*###### +## at_brewfest +######*/ + +enum Brewfest +{ + NPC_TAPPER_SWINDLEKEG = 24711, + NPC_IPFELKOFER_IRONKEG = 24710, + + AT_BREWFEST_DUROTAR = 4829, + AT_BREWFEST_DUN_MOROGH = 4820, + + SAY_WELCOME = 4, + + AREATRIGGER_TALK_COOLDOWN = 5, // in seconds +}; + +class AreaTrigger_at_brewfest : public AreaTriggerScript +{ + public: + AreaTrigger_at_brewfest() : AreaTriggerScript("at_brewfest") + { + // Initialize for cooldown + _triggerTimes[AT_BREWFEST_DUROTAR] = _triggerTimes[AT_BREWFEST_DUN_MOROGH] = 0; + } + + bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) + { + uint32 triggerId = trigger->id; + // Second trigger happened too early after first, skip for now + if (sWorld->GetGameTime() - _triggerTimes[triggerId] < AREATRIGGER_TALK_COOLDOWN) + return false; + + switch (triggerId) + { + case AT_BREWFEST_DUROTAR: + if (Creature* tapper = player->FindNearestCreature(NPC_TAPPER_SWINDLEKEG, 20.0f)) + tapper->AI()->Talk(SAY_WELCOME, player->GetGUID()); + break; + case AT_BREWFEST_DUN_MOROGH: + if (Creature* ipfelkofer = player->FindNearestCreature(NPC_IPFELKOFER_IRONKEG, 20.0f)) + ipfelkofer->AI()->Talk(SAY_WELCOME, player->GetGUID()); + break; + default: + break; + } + + _triggerTimes[triggerId] = sWorld->GetGameTime(); + return false; + } + + private: + std::map _triggerTimes; +}; + void AddSC_areatrigger_scripts() { new AreaTrigger_at_coilfang_waterfall(); @@ -374,4 +430,5 @@ void AddSC_areatrigger_scripts() new AreaTrigger_at_sholazar_waygate(); new AreaTrigger_at_nats_landing(); new AreaTrigger_at_bring_your_orphan_to(); + new AreaTrigger_at_brewfest(); } -- cgit v1.2.3 From dbcccbbb44cd331ab5ad31361b2fa4a6f12990bc Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 16:44:55 +0100 Subject: Core/Quests: Add script for quest The Thunderspike. Closes #4458. --- sql/updates/world/2011_12_25_03_world_misc.sql | 3 +++ .../scripts/Outland/blades_edge_mountains.cpp | 27 +++++++++++++++++++++- src/server/scripts/World/areatrigger_scripts.cpp | 4 ++-- 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 sql/updates/world/2011_12_25_03_world_misc.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_03_world_misc.sql b/sql/updates/world/2011_12_25_03_world_misc.sql new file mode 100644 index 00000000000..2a2c26d1874 --- /dev/null +++ b/sql/updates/world/2011_12_25_03_world_misc.sql @@ -0,0 +1,3 @@ +-- The Thunderspike +UPDATE `gameobject_template` SET `AIName`='',`ScriptName`='go_thunderspike',`data3`=0 WHERE `entry`=184729; -- data3 was `event_scripts`.`id` +DELETE FROM `event_scripts` WHERE `id`=13685; diff --git a/src/server/scripts/Outland/blades_edge_mountains.cpp b/src/server/scripts/Outland/blades_edge_mountains.cpp index f94a7d2725c..f7c995d8f92 100644 --- a/src/server/scripts/Outland/blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/blades_edge_mountains.cpp @@ -30,6 +30,7 @@ npc_daranelle npc_overseer_nuaar npc_saikkal_the_elder go_legion_obelisk +go_thunderspike EndContentData */ #include "ScriptPCH.h" @@ -537,9 +538,32 @@ public: }; /*###### -## AddSC +## go_thunderspike ######*/ +enum TheThunderspike +{ + NPC_GOR_GRIMGUT = 21319, + QUEST_THUNDERSPIKE = 10526, +}; + +class go_thunderspike : public GameObjectScript +{ + public: + go_thunderspike() : GameObjectScript("go_thunderspike") { } + + bool OnGossipHello(Player* player, GameObject* go) + { + if (player->GetQuestStatus(QUEST_THUNDERSPIKE) == QUEST_STATUS_INCOMPLETE) + { + if (Creature* gorGrimgut = go->SummonCreature(NPC_GOR_GRIMGUT, -2413.4f, 6914.48f, 25.01f, 3.67f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 300000)) + gorGrimgut->AI()->AttackStart(player); + } + + return true; + } +}; + void AddSC_blades_edge_mountains() { new mobs_bladespire_ogre(); @@ -550,4 +574,5 @@ void AddSC_blades_edge_mountains() new go_legion_obelisk(); new npc_bloodmaul_brutebane(); new npc_ogre_brute(); + new go_thunderspike(); } diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index e9ddfa43d6d..9e3e64f1860 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -402,11 +402,11 @@ class AreaTrigger_at_brewfest : public AreaTriggerScript { case AT_BREWFEST_DUROTAR: if (Creature* tapper = player->FindNearestCreature(NPC_TAPPER_SWINDLEKEG, 20.0f)) - tapper->AI()->Talk(SAY_WELCOME, player->GetGUID()); + tapper->AI()->Talk(SAY_WELCOME, player->GetGUID()); break; case AT_BREWFEST_DUN_MOROGH: if (Creature* ipfelkofer = player->FindNearestCreature(NPC_IPFELKOFER_IRONKEG, 20.0f)) - ipfelkofer->AI()->Talk(SAY_WELCOME, player->GetGUID()); + ipfelkofer->AI()->Talk(SAY_WELCOME, player->GetGUID()); break; default: break; -- cgit v1.2.3 From 9b8d18e7cd09625ba5b24355a3ca88b83125fd11 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 17:17:28 +0100 Subject: Scripts/Quests: Add a double check in summoning for two of my previous scripts, as well as revert changing WDB data. --- sql/updates/world/2011_12_25_03_world_misc.sql | 2 +- src/server/scripts/Kalimdor/desolace.cpp | 4 ++-- src/server/scripts/Outland/blades_edge_mountains.cpp | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) (limited to 'src/server/scripts') diff --git a/sql/updates/world/2011_12_25_03_world_misc.sql b/sql/updates/world/2011_12_25_03_world_misc.sql index 2a2c26d1874..a8967354a3d 100644 --- a/sql/updates/world/2011_12_25_03_world_misc.sql +++ b/sql/updates/world/2011_12_25_03_world_misc.sql @@ -1,3 +1,3 @@ -- The Thunderspike -UPDATE `gameobject_template` SET `AIName`='',`ScriptName`='go_thunderspike',`data3`=0 WHERE `entry`=184729; -- data3 was `event_scripts`.`id` +UPDATE `gameobject_template` SET `AIName`='',`ScriptName`='go_thunderspike' WHERE `entry`=184729; DELETE FROM `event_scripts` WHERE `id`=13685; diff --git a/src/server/scripts/Kalimdor/desolace.cpp b/src/server/scripts/Kalimdor/desolace.cpp index 3d023b93dc2..5badc7fe725 100644 --- a/src/server/scripts/Kalimdor/desolace.cpp +++ b/src/server/scripts/Kalimdor/desolace.cpp @@ -188,7 +188,7 @@ class go_iruxos : public GameObjectScript bool OnGossipHello(Player* player, GameObject* go) { - if (player->GetQuestStatus(QUEST_HAND_IRUXOS) == QUEST_STATUS_INCOMPLETE) + if (player->GetQuestStatus(QUEST_HAND_IRUXOS) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(NPC_DEMON_SPIRIT, 25.0f, true)) player->SummonCreature(NPC_DEMON_SPIRIT, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); return true; @@ -283,7 +283,7 @@ class go_demon_portal : public GameObjectScript bool OnGossipHello(Player* player, GameObject* go) { - if (player->GetQuestStatus(QUEST_PORTAL_OF_THE_LEGION) == QUEST_STATUS_INCOMPLETE) + if (player->GetQuestStatus(QUEST_PORTAL_OF_THE_LEGION) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(NPC_DEMON_GUARDIAN, 5.0f, true)) { if (Creature* guardian = player->SummonCreature(NPC_DEMON_GUARDIAN, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), 0.0f, TEMPSUMMON_DEAD_DESPAWN, 0)) guardian->AI()->AttackStart(player); diff --git a/src/server/scripts/Outland/blades_edge_mountains.cpp b/src/server/scripts/Outland/blades_edge_mountains.cpp index f7c995d8f92..87304a3f721 100644 --- a/src/server/scripts/Outland/blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/blades_edge_mountains.cpp @@ -554,11 +554,9 @@ class go_thunderspike : public GameObjectScript bool OnGossipHello(Player* player, GameObject* go) { - if (player->GetQuestStatus(QUEST_THUNDERSPIKE) == QUEST_STATUS_INCOMPLETE) - { + if (player->GetQuestStatus(QUEST_THUNDERSPIKE) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(NPC_GOR_GRIMGUT, 25.0f, true)) if (Creature* gorGrimgut = go->SummonCreature(NPC_GOR_GRIMGUT, -2413.4f, 6914.48f, 25.01f, 3.67f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 300000)) gorGrimgut->AI()->AttackStart(player); - } return true; } -- cgit v1.2.3 From ef17c05dec23eed3a2dddc3697574155ad061079 Mon Sep 17 00:00:00 2001 From: leak Date: Sun, 25 Dec 2011 18:12:58 +0100 Subject: Core/DBLayer: Convert PExecute() queries to prepared statements No. 1 --- dep/g3dlite/source/Log.cpp | 14 +-- src/server/game/Accounts/AccountMgr.cpp | 19 ++-- src/server/game/Chat/Chat.h | 6 +- src/server/game/Chat/Commands/Level2.cpp | 126 ++++++++++++++------- .../game/Server/Protocol/Handlers/MiscHandler.cpp | 9 +- .../Server/Protocol/Handlers/PetitionsHandler.cpp | 85 +++++++------- .../game/Server/Protocol/Handlers/SpellHandler.cpp | 47 ++++---- src/server/game/Server/WorldSession.cpp | 8 +- src/server/scripts/Commands/cs_account.cpp | 35 ++++-- .../Database/Implementation/CharacterDatabase.cpp | 6 + .../Database/Implementation/CharacterDatabase.h | 6 + .../Database/Implementation/LoginDatabase.cpp | 6 + .../shared/Database/Implementation/LoginDatabase.h | 6 + src/server/shared/Logging/Log.cpp | 14 ++- 14 files changed, 249 insertions(+), 138 deletions(-) (limited to 'src/server/scripts') diff --git a/dep/g3dlite/source/Log.cpp b/dep/g3dlite/source/Log.cpp index f437351cfbd..d44d88d0242 100644 --- a/dep/g3dlite/source/Log.cpp +++ b/dep/g3dlite/source/Log.cpp @@ -23,23 +23,23 @@ namespace G3D { void logPrintf(const char* fmt, ...) { - va_list arg_list; - va_start(arg_list, fmt); + va_list arg_list; + va_start(arg_list, fmt); Log::common()->vprintf(fmt, arg_list); va_end(arg_list); } void logLazyPrintf(const char* fmt, ...) { - va_list arg_list; - va_start(arg_list, fmt); + va_list arg_list; + va_start(arg_list, fmt); Log::common()->lazyvprintf(fmt, arg_list); va_end(arg_list); } Log* Log::commonLog = NULL; -Log::Log(const std::string& filename, int stripFromStackBottom) : +Log::Log(const std::string& filename, int stripFromStackBottom) : stripFromStackBottom(stripFromStackBottom) { this->filename = filename; @@ -50,7 +50,7 @@ Log::Log(const std::string& filename, int stripFromStackBottom) : std::string drive, base, ext; Array path; parseFilename(filename, drive, path, base, ext); - std::string logName = base + ((ext != "") ? ("." + ext) : ""); + std::string logName = base + ((ext != "") ? ("." + ext) : ""); // Write time is greater than 1ms. This may be a network drive.... try another file. #ifdef G3D_WIN32 @@ -80,7 +80,7 @@ Log::Log(const std::string& filename, int stripFromStackBottom) : Log::~Log() { section("Shutdown"); println("Closing log file"); - + // Make sure we don't leave a dangling pointer if (Log::commonLog == this) { Log::commonLog = NULL; diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp index 9ae80ca2919..6c3dd69c0da 100755 --- a/src/server/game/Accounts/AccountMgr.cpp +++ b/src/server/game/Accounts/AccountMgr.cpp @@ -112,11 +112,13 @@ AccountOpResult ChangeUsername(uint32 accountId, std::string newUsername, std::s normalizeString(newUsername); normalizeString(newPassword); - std::string safeNewUsername = newUsername; - LoginDatabase.EscapeString(safeNewUsername); + PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPDATE_USERNAME); - LoginDatabase.PExecute("UPDATE account SET v='0', s='0', username='%s', sha_pass_hash='%s' WHERE id='%d'", safeNewUsername.c_str(), - CalculateShaPassHash(newUsername, newPassword).c_str(), accountId); + stmt->setString(0, newUsername); + stmt->setString(1, CalculateShaPassHash(newUsername, newPassword)); + stmt->setUInt32(2, accountId); + + LoginDatabase.Execute(stmt); return AOR_OK; } @@ -134,9 +136,12 @@ AccountOpResult ChangePassword(uint32 accountId, std::string newPassword) normalizeString(username); normalizeString(newPassword); - // also reset s and v to force update at next realmd login - LoginDatabase.PExecute("UPDATE account SET v='0', s='0', sha_pass_hash='%s' WHERE id='%d'", - CalculateShaPassHash(username, newPassword).c_str(), accountId); + PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPDATE_PASSWORD); + + stmt->setString(0, CalculateShaPassHash(username, newPassword)); + stmt->setUInt32(1, accountId); + + LoginDatabase.Execute(stmt); return AOR_OK; } diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index 24652fcc6d5..95c244167f6 100755 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -154,8 +154,8 @@ class ChatHandler bool HandleCastTargetCommand(const char *args); bool HandleCastDestCommand(const char *args); - bool HandleCharacterCustomizeCommand(const char * args); - bool HandleCharacterChangeFactionCommand(const char * args); + bool HandleCharacterCustomizeCommand(const char* args); + bool HandleCharacterChangeFactionCommand(const char* args); bool HandleCharacterChangeRaceCommand(const char * args); bool HandleCharacterDeletedDeleteCommand(const char* args); bool HandleCharacterDeletedListCommand(const char* args); @@ -163,7 +163,7 @@ class ChatHandler bool HandleCharacterDeletedOldCommand(const char* args); bool HandleCharacterEraseCommand(const char* args); bool HandleCharacterLevelCommand(const char* args); - bool HandleCharacterRenameCommand(const char * args); + bool HandleCharacterRenameCommand(const char* args); bool HandleCharacterReputationCommand(const char* args); bool HandleCharacterTitlesCommand(const char* args); diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp index 41bc564759c..5411b1364c0 100755 --- a/src/server/game/Chat/Commands/Level2.cpp +++ b/src/server/game/Chat/Commands/Level2.cpp @@ -63,11 +63,11 @@ bool ChatHandler::HandleMuteCommand(const char* args) if (!extractPlayerTarget(nameStr, &target, &target_guid, &target_name)) return false; - uint32 account_id = target ? target->GetSession()->GetAccountId() : sObjectMgr->GetPlayerAccountIdByGUID(target_guid); + uint32 accountId = target ? target->GetSession()->GetAccountId() : sObjectMgr->GetPlayerAccountIdByGUID(target_guid); // find only player from same account if any if (!target) - if (WorldSession* session = sWorld->FindSession(account_id)) + if (WorldSession* session = sWorld->FindSession(accountId)) target = session->GetPlayer(); uint32 notspeaktime = (uint32) atoi(delayStr); @@ -76,21 +76,30 @@ bool ChatHandler::HandleMuteCommand(const char* args) if (HasLowerSecurity (target, target_guid, true)) return false; + PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPDATE_MUTE_TIME); + if (target) { - //! Target is online, mute will be in effect right away. - int64 mutetime = time(NULL) + notspeaktime * MINUTE; - target->GetSession()->m_muteTime = mutetime; - LoginDatabase.PExecute("UPDATE account SET mutetime = " SI64FMTD " WHERE id = '%u'", mutetime, account_id); + // Target is online, mute will be in effect right away. + int64 muteTime = time(NULL) + notspeaktime * MINUTE; + target->GetSession()->m_muteTime = muteTime; + + stmt->setInt64(0, muteTime); + ChatHandler(target).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, notspeaktime, mutereasonstr.c_str()); } else { - //! Target is offline, mute will be in effect starting from the next login. + // Target is offline, mute will be in effect starting from the next login. int32 muteTime = -int32(notspeaktime * MINUTE); - LoginDatabase.PExecute("UPDATE account SET mutetime = %d WHERE id = %u", muteTime, account_id); + + stmt->setInt64(0, muteTime); } + stmt->setUInt32(1, accountId); + + LoginDatabase.Execute(stmt); + std::string nameLink = playerLink(target_name); PSendSysMessage(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED, nameLink.c_str(), notspeaktime, mutereasonstr.c_str()); @@ -107,11 +116,11 @@ bool ChatHandler::HandleUnmuteCommand(const char* args) if (!extractPlayerTarget((char*)args, &target, &target_guid, &target_name)) return false; - uint32 account_id = target ? target->GetSession()->GetAccountId() : sObjectMgr->GetPlayerAccountIdByGUID(target_guid); + uint32 accountId = target ? target->GetSession()->GetAccountId() : sObjectMgr->GetPlayerAccountIdByGUID(target_guid); // find only player from same account if any if (!target) - if (WorldSession* session = sWorld->FindSession(account_id)) + if (WorldSession* session = sWorld->FindSession(accountId)) target = session->GetPlayer(); // must have strong lesser security level @@ -130,7 +139,12 @@ bool ChatHandler::HandleUnmuteCommand(const char* args) target->GetSession()->m_muteTime = 0; } - LoginDatabase.PExecute("UPDATE account SET mutetime = '0' WHERE id = '%u'", account_id); + PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPDATE_MUTE_TIME); + + stmt->setInt64(0, 0); + stmt->setUInt32(1, accountId); + + LoginDatabase.Execute(stmt); if (target) ChatHandler(target).PSendSysMessage(LANG_YOUR_CHAT_ENABLED); @@ -441,9 +455,9 @@ bool ChatHandler::HandlePInfoCommand(const char* args) bool ChatHandler::HandleCharacterRenameCommand(const char* args) { Player* target; - uint64 target_guid; - std::string target_name; - if (!extractPlayerTarget((char*)args, &target, &target_guid, &target_name)) + uint64 targetGuid; + std::string targetName; + if (!extractPlayerTarget((char*)args, &target, &targetGuid, &targetName)) return false; if (target) @@ -458,13 +472,19 @@ bool ChatHandler::HandleCharacterRenameCommand(const char* args) else { // check offline security - if (HasLowerSecurity(NULL, target_guid)) + if (HasLowerSecurity(NULL, targetGuid)) return false; - std::string oldNameLink = playerLink(target_name); + std::string oldNameLink = playerLink(targetName); + + PSendSysMessage(LANG_RENAME_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(targetGuid)); + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPDATE_AT_LOGIN_FLAG); - PSendSysMessage(LANG_RENAME_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(target_guid)); - CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '1' WHERE guid = '%u'", GUID_LOPART(target_guid)); + stmt->setUInt16(0, uint16(AT_LOGIN_RENAME)); + stmt->setUInt32(1, GUID_LOPART(targetGuid)); + + CharacterDatabase.Execute(stmt); } return true; @@ -474,80 +494,102 @@ bool ChatHandler::HandleCharacterRenameCommand(const char* args) bool ChatHandler::HandleCharacterCustomizeCommand(const char* args) { Player* target; - uint64 target_guid; - std::string target_name; - if (!extractPlayerTarget((char*)args, &target, &target_guid, &target_name)) + uint64 targetGuid; + std::string targetName; + if (!extractPlayerTarget((char*)args, &target, &targetGuid, &targetName)) return false; + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPDATE_AT_LOGIN_FLAG); + + stmt->setUInt16(0, uint16(AT_LOGIN_CUSTOMIZE)); + if (target) { PSendSysMessage(LANG_CUSTOMIZE_PLAYER, GetNameLink(target).c_str()); target->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE); - CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '8' WHERE guid = '%u'", target->GetGUIDLow()); + + stmt->setUInt32(1, target->GetGUIDLow()); } else { - std::string oldNameLink = playerLink(target_name); + std::string oldNameLink = playerLink(targetName); - PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(target_guid)); - CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '8' WHERE guid = '%u'", GUID_LOPART(target_guid)); + stmt->setUInt32(1, GUID_LOPART(targetGuid)); + + PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(targetGuid)); } + CharacterDatabase.Execute(stmt); + return true; } -bool ChatHandler::HandleCharacterChangeFactionCommand(const char * args) +bool ChatHandler::HandleCharacterChangeFactionCommand(const char* args) { Player* target; - uint64 target_guid; - std::string target_name; + uint64 targetGuid; + std::string targetName; - if (!extractPlayerTarget((char*)args, &target, &target_guid, &target_name)) + if (!extractPlayerTarget((char*)args, &target, &targetGuid, &targetName)) return false; + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPDATE_AT_LOGIN_FLAG); + + stmt->setUInt16(0, uint16(AT_LOGIN_CHANGE_FACTION)); + if (target) { - // TODO : add text into database PSendSysMessage(LANG_CUSTOMIZE_PLAYER, GetNameLink(target).c_str()); target->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION); - CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '64' WHERE guid = %u", target->GetGUIDLow()); + + stmt->setUInt32(1, target->GetGUIDLow()); } else { - std::string oldNameLink = playerLink(target_name); + std::string oldNameLink = playerLink(targetName); - // TODO : add text into database - PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(target_guid)); - CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '64' WHERE guid = %u", GUID_LOPART(target_guid)); + PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(targetGuid)); + + stmt->setUInt32(1, GUID_LOPART(targetGuid)); } + CharacterDatabase.Execute(stmt); + return true; } bool ChatHandler::HandleCharacterChangeRaceCommand(const char * args) { Player* target; - uint64 target_guid; - std::string target_name; - if (!extractPlayerTarget((char*)args, &target, &target_guid, &target_name)) + uint64 targetGuid; + std::string targetName; + if (!extractPlayerTarget((char*)args, &target, &targetGuid, &targetName)) return false; + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPDATE_AT_LOGIN_FLAG); + + stmt->setUInt16(0, uint16(AT_LOGIN_CHANGE_FACTION)); + if (target) { // TODO : add text into database PSendSysMessage(LANG_CUSTOMIZE_PLAYER, GetNameLink(target).c_str()); target->SetAtLoginFlag(AT_LOGIN_CHANGE_RACE); - CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '128' WHERE guid = %u", target->GetGUIDLow()); + + stmt->setUInt32(1, target->GetGUIDLow()); } else { - std::string oldNameLink = playerLink(target_name); + std::string oldNameLink = playerLink(targetName); // TODO : add text into database - PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(target_guid)); - CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '128' WHERE guid = %u", GUID_LOPART(target_guid)); + PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(targetGuid)); + + stmt->setUInt32(1, GUID_LOPART(targetGuid)); } + CharacterDatabase.Execute(stmt); + return true; } diff --git a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp index aef3bf03bd9..6b972f94dd5 100755 --- a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp @@ -709,9 +709,12 @@ void WorldSession::HandleBugOpcode(WorldPacket & recv_data) sLog->outDebug(LOG_FILTER_NETWORKIO, "%s", type.c_str()); sLog->outDebug(LOG_FILTER_NETWORKIO, "%s", content.c_str()); - CharacterDatabase.EscapeString(type); - CharacterDatabase.EscapeString(content); - CharacterDatabase.PExecute ("INSERT INTO bugreport (type, content) VALUES('%s', '%s')", type.c_str(), content.c_str()); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_BUG_REPORT); + + stmt->setString(0, type); + stmt->setString(1, content); + + CharacterDatabase.Execute(stmt); } void WorldSession::HandleReclaimCorpseOpcode(WorldPacket &recv_data) diff --git a/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp b/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp index 2e9b88bd3f0..fed84728efd 100755 --- a/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp @@ -372,18 +372,18 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data) { sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode MSG_PETITION_RENAME"); // ok - uint64 petitionguid; + uint64 petitionGuid; uint32 type; - std::string newname; + std::string newName; - recv_data >> petitionguid; // guid - recv_data >> newname; // new name + recv_data >> petitionGuid; // guid + recv_data >> newName; // new name - Item* item = _player->GetItemByGuid(petitionguid); + Item* item = _player->GetItemByGuid(petitionGuid); if (!item) return; - QueryResult result = CharacterDatabase.PQuery("SELECT type FROM petition WHERE petitionguid = '%u'", GUID_LOPART(petitionguid)); + QueryResult result = CharacterDatabase.PQuery("SELECT type FROM petition WHERE petitionguid = '%u'", GUID_LOPART(petitionGuid)); if (result) { @@ -392,46 +392,48 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data) } else { - sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_PETITION_QUERY failed for petition (GUID: %u)", GUID_LOPART(petitionguid)); + sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_PETITION_QUERY failed for petition (GUID: %u)", GUID_LOPART(petitionGuid)); return; } if (type == GUILD_CHARTER_TYPE) { - if (sGuildMgr->GetGuildByName(newname)) + if (sGuildMgr->GetGuildByName(newName)) { - Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_EXISTS_S, newname); + Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_EXISTS_S, newName); return; } - if (sObjectMgr->IsReservedName(newname) || !ObjectMgr::IsValidCharterName(newname)) + if (sObjectMgr->IsReservedName(newName) || !ObjectMgr::IsValidCharterName(newName)) { - Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_INVALID, newname); + Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_INVALID, newName); return; } } else { - if (sArenaTeamMgr->GetArenaTeamByName(newname)) + if (sArenaTeamMgr->GetArenaTeamByName(newName)) { - SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, newname, "", ERR_ARENA_TEAM_NAME_EXISTS_S); + SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, newName, "", ERR_ARENA_TEAM_NAME_EXISTS_S); return; } - if (sObjectMgr->IsReservedName(newname) || !ObjectMgr::IsValidCharterName(newname)) + if (sObjectMgr->IsReservedName(newName) || !ObjectMgr::IsValidCharterName(newName)) { - SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, newname, "", ERR_ARENA_TEAM_NAME_INVALID); + SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, newName, "", ERR_ARENA_TEAM_NAME_INVALID); return; } } - std::string db_newname = newname; - CharacterDatabase.EscapeString(db_newname); - CharacterDatabase.PExecute("UPDATE petition SET name = '%s' WHERE petitionguid = '%u'", - db_newname.c_str(), GUID_LOPART(petitionguid)); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_PETITION_NAME); + + stmt->setString(0, newName); + stmt->setUInt32(1, GUID_LOPART(petitionGuid)); + + CharacterDatabase.Execute(stmt); - sLog->outDebug(LOG_FILTER_NETWORKIO, "Petition (GUID: %u) renamed to '%s'", GUID_LOPART(petitionguid), newname.c_str()); - WorldPacket data(MSG_PETITION_RENAME, (8+newname.size()+1)); - data << uint64(petitionguid); - data << newname; + sLog->outDebug(LOG_FILTER_NETWORKIO, "Petition (GUID: %u) renamed to '%s'", GUID_LOPART(petitionGuid), newName.c_str()); + WorldPacket data(MSG_PETITION_RENAME, (8+newName.size()+1)); + data << uint64(petitionGuid); + data << newName; SendPacket(&data); } @@ -440,34 +442,34 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data) sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode CMSG_PETITION_SIGN"); // ok Field* fields; - uint64 petitionguid; + uint64 petitionGuid; uint8 unk; - recv_data >> petitionguid; // petition guid + recv_data >> petitionGuid; // petition guid recv_data >> unk; QueryResult result = CharacterDatabase.PQuery( "SELECT ownerguid, " " (SELECT COUNT(playerguid) FROM petition_sign WHERE petition_sign.petitionguid = '%u') AS signs, " " type " - "FROM petition WHERE petitionguid = '%u'", GUID_LOPART(petitionguid), GUID_LOPART(petitionguid)); + "FROM petition WHERE petitionguid = '%u'", GUID_LOPART(petitionGuid), GUID_LOPART(petitionGuid)); if (!result) { - sLog->outError("Petition %u is not found for player %u %s", GUID_LOPART(petitionguid), GetPlayer()->GetGUIDLow(), GetPlayer()->GetName()); + sLog->outError("Petition %u is not found for player %u %s", GUID_LOPART(petitionGuid), GetPlayer()->GetGUIDLow(), GetPlayer()->GetName()); return; } fields = result->Fetch(); - uint64 ownerguid = MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER); + uint64 ownerGuid = MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER); uint8 signs = fields[1].GetUInt8(); uint32 type = fields[2].GetUInt32(); - uint32 plguidlo = _player->GetGUIDLow(); - if (GUID_LOPART(ownerguid) == plguidlo) + uint32 playerGuid = _player->GetGUIDLow(); + if (GUID_LOPART(ownerGuid) == playerGuid) return; // not let enemies sign guild charter - if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && GetPlayer()->GetTeam() != sObjectMgr->GetPlayerTeamByGUID(ownerguid)) + if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && GetPlayer()->GetTeam() != sObjectMgr->GetPlayerTeamByGUID(ownerGuid)) { if (type != GUILD_CHARTER_TYPE) SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED); @@ -519,12 +521,12 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data) //client doesn't allow to sign petition two times by one character, but not check sign by another character from same account //not allow sign another player from already sign player account - result = CharacterDatabase.PQuery("SELECT playerguid FROM petition_sign WHERE player_account = '%u' AND petitionguid = '%u'", GetAccountId(), GUID_LOPART(petitionguid)); + result = CharacterDatabase.PQuery("SELECT playerguid FROM petition_sign WHERE player_account = '%u' AND petitionguid = '%u'", GetAccountId(), GUID_LOPART(petitionGuid)); if (result) { WorldPacket data(SMSG_PETITION_SIGN_RESULTS, (8+8+4)); - data << uint64(petitionguid); + data << uint64(petitionGuid); data << uint64(_player->GetGUID()); data << (uint32)PETITION_SIGN_ALREADY_SIGNED; @@ -532,17 +534,24 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data) SendPacket(&data); // update for owner if online - if (Player* owner = ObjectAccessor::FindPlayer(ownerguid)) + if (Player* owner = ObjectAccessor::FindPlayer(ownerGuid)) owner->GetSession()->SendPacket(&data); return; } - CharacterDatabase.PExecute("INSERT INTO petition_sign (ownerguid, petitionguid, playerguid, player_account) VALUES ('%u', '%u', '%u', '%u')", GUID_LOPART(ownerguid), GUID_LOPART(petitionguid), plguidlo, GetAccountId()); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_PETITION_SIGNATURE); + + stmt->setUInt32(0, GUID_LOPART(ownerGuid)); + stmt->setUInt32(1, GUID_LOPART(petitionGuid)); + stmt->setUInt32(2, playerGuid); + stmt->setUInt32(3, GetAccountId()); + + CharacterDatabase.Execute(stmt); - sLog->outDebug(LOG_FILTER_NETWORKIO, "PETITION SIGN: GUID %u by player: %s (GUID: %u Account: %u)", GUID_LOPART(petitionguid), _player->GetName(), plguidlo, GetAccountId()); + sLog->outDebug(LOG_FILTER_NETWORKIO, "PETITION SIGN: GUID %u by player: %s (GUID: %u Account: %u)", GUID_LOPART(petitionGuid), _player->GetName(), playerGuid, GetAccountId()); WorldPacket data(SMSG_PETITION_SIGN_RESULTS, (8+8+4)); - data << uint64(petitionguid); + data << uint64(petitionGuid); data << uint64(_player->GetGUID()); data << uint32(PETITION_SIGN_OK); @@ -555,7 +564,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data) // item->SetUInt32Value(ITEM_FIELD_ENCHANTMENT_1_1+1, signs); // update for owner if online - if (Player* owner = ObjectAccessor::FindPlayer(ownerguid)) + if (Player* owner = ObjectAccessor::FindPlayer(ownerGuid)) owner->GetSession()->SendPacket(&data); } diff --git a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp index 269576a5696..ffe205304e3 100755 --- a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp @@ -213,26 +213,26 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket) sLog->outDetail("bagIndex: %u, slot: %u", bagIndex, slot); - Item* pItem = pUser->GetItemByPos(bagIndex, slot); - if (!pItem) + Item* item = pUser->GetItemByPos(bagIndex, slot); + if (!item) { pUser->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL); return; } - ItemTemplate const* proto = pItem->GetTemplate(); + ItemTemplate const* proto = item->GetTemplate(); if (!proto) { - pUser->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, pItem, NULL); + pUser->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, item, NULL); return; } // Verify that the bag is an actual bag or wrapped item that can be used "normally" - if (!(proto->Flags & ITEM_PROTO_FLAG_OPENABLE) && !pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED)) + if (!(proto->Flags & ITEM_PROTO_FLAG_OPENABLE) && !item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED)) { - pUser->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, pItem, NULL); + pUser->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, item, NULL); sLog->outError("Possible hacking attempt: Player %s [guid: %u] tried to open item [guid: %u, entry: %u] which is not openable!", - pUser->GetName(), pUser->GetGUIDLow(), pItem->GetGUIDLow(), proto->ItemId); + pUser->GetName(), pUser->GetGUIDLow(), item->GetGUIDLow(), proto->ItemId); return; } @@ -244,43 +244,48 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket) if (!lockInfo) { - pUser->SendEquipError(EQUIP_ERR_ITEM_LOCKED, pItem, NULL); - sLog->outError("WORLD::OpenItem: item [guid = %u] has an unknown lockId: %u!", pItem->GetGUIDLow(), lockId); + pUser->SendEquipError(EQUIP_ERR_ITEM_LOCKED, item, NULL); + sLog->outError("WORLD::OpenItem: item [guid = %u] has an unknown lockId: %u!", item->GetGUIDLow(), lockId); return; } // was not unlocked yet - if (pItem->IsLocked()) + if (item->IsLocked()) { - pUser->SendEquipError(EQUIP_ERR_ITEM_LOCKED, pItem, NULL); + pUser->SendEquipError(EQUIP_ERR_ITEM_LOCKED, item, NULL); return; } } - if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED))// wrapped? + if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED))// wrapped? { - QueryResult result = CharacterDatabase.PQuery("SELECT entry, flags FROM character_gifts WHERE item_guid = '%u'", pItem->GetGUIDLow()); + QueryResult result = CharacterDatabase.PQuery("SELECT entry, flags FROM character_gifts WHERE item_guid = '%u'", item->GetGUIDLow()); if (result) { Field* fields = result->Fetch(); uint32 entry = fields[0].GetUInt32(); uint32 flags = fields[1].GetUInt32(); - pItem->SetUInt64Value(ITEM_FIELD_GIFTCREATOR, 0); - pItem->SetEntry(entry); - pItem->SetUInt32Value(ITEM_FIELD_FLAGS, flags); - pItem->SetState(ITEM_CHANGED, pUser); + item->SetUInt64Value(ITEM_FIELD_GIFTCREATOR, 0); + item->SetEntry(entry); + item->SetUInt32Value(ITEM_FIELD_FLAGS, flags); + item->SetState(ITEM_CHANGED, pUser); } else { - sLog->outError("Wrapped item %u don't have record in character_gifts table and will deleted", pItem->GetGUIDLow()); - pUser->DestroyItem(pItem->GetBagSlot(), pItem->GetSlot(), true); + sLog->outError("Wrapped item %u don't have record in character_gifts table and will deleted", item->GetGUIDLow()); + pUser->DestroyItem(item->GetBagSlot(), item->GetSlot(), true); return; } - CharacterDatabase.PExecute("DELETE FROM character_gifts WHERE item_guid = '%u'", pItem->GetGUIDLow()); + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT); + + stmt->setUInt32(0, item->GetGUIDLow()); + + CharacterDatabase.Execute(stmt); } else - pUser->SendLoot(pItem->GetGUID(), LOOT_CORPSE); + pUser->SendLoot(item->GetGUID(), LOOT_CORPSE); } void WorldSession::HandleGameObjectUseOpcode(WorldPacket & recv_data) diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 35173387839..3288224e1f2 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -529,7 +529,13 @@ void WorldSession::LogoutPlayer(bool Save) ///- Since each account can only have one online character at any given time, ensure all characters for active account are marked as offline //No SQL injection as AccountId is uint32 - CharacterDatabase.PExecute("UPDATE characters SET online = 0 WHERE account = '%u'", GetAccountId()); + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ACCOUNT_ONLINE); + + stmt->setUInt32(0, GetAccountId()); + + CharacterDatabase.Execute(stmt); + sLog->outDebug(LOG_FILTER_NETWORKIO, "SESSION: Sent SMSG_LOGOUT_COMPLETE Message"); } diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp index ae3250ad7b7..bcef7ac9ba9 100644 --- a/src/server/scripts/Commands/cs_account.cpp +++ b/src/server/scripts/Commands/cs_account.cpp @@ -81,8 +81,13 @@ public: return false; } - // No SQL injection - LoginDatabase.PExecute("UPDATE account SET expansion = '%d' WHERE id = '%u'", expansion, accountId); + PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPDATE_EXPANSION); + + stmt->setUInt8(0, uint8(expansion)); + stmt->setUInt32(1, accountId); + + LoginDatabase.Execute(stmt); + handler->PSendSysMessage(LANG_ACCOUNT_ADDON, expansion); return true; } @@ -242,17 +247,25 @@ public: } std::string param = (char*)args; - if (param == "on") - { - LoginDatabase.PExecute("UPDATE account SET locked = '1' WHERE id = '%d'", handler->GetSession()->GetAccountId()); - handler->PSendSysMessage(LANG_COMMAND_ACCLOCKLOCKED); - return true; - } - if (param == "off") + if (!param.empty()) { - LoginDatabase.PExecute("UPDATE account SET locked = '0' WHERE id = '%d'", handler->GetSession()->GetAccountId()); - handler->PSendSysMessage(LANG_COMMAND_ACCLOCKUNLOCKED); + PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPDATE_ACCOUNT_LOCK); + + if (param == "on") + { + stmt->setBool(0, true); // locked + handler->PSendSysMessage(LANG_COMMAND_ACCLOCKLOCKED); + } + else if (param == "off") + { + stmt->setBool(0, false); // unlocked + handler->PSendSysMessage(LANG_COMMAND_ACCLOCKUNLOCKED); + } + + stmt->setUInt32(1, handler->GetSession()->GetAccountId()); + + LoginDatabase.Execute(stmt); return true; } diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 768ebd8a97a..02ff2dc5fb3 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -327,4 +327,10 @@ void CharacterDatabaseConnection::DoPrepareStatements() "arenaPoints=?,totalHonorPoints=?,todayHonorPoints=?,yesterdayHonorPoints=?,totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?,knownCurrencies=?," "watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,power7=?,latency=?,speccount=?,activespec=?,exploredZones=?," "equipmentCache=?,ammoId=?,knownTitles=?,actionBars=?,grantableLevels=?,online=? WHERE guid=?", CONNECTION_ASYNC); + + PREPARE_STATEMENT(CHAR_UPDATE_AT_LOGIN_FLAG, "UPDATE characters SET at_login = at_login | ? WHERE guid = ?", CONNECTION_ASYNC); + PREPARE_STATEMENT(CHAR_ADD_BUG_REPORT, "INSERT INTO bugreport (type, content) VALUES(?, ?)", CONNECTION_ASYNC); + PREPARE_STATEMENT(CHAR_UPD_PETITION_NAME, "UPDATE petition SET name = ? WHERE petitionguid = ?", CONNECTION_ASYNC); + PREPARE_STATEMENT(CHAR_ADD_PETITION_SIGNATURE, "INSERT INTO petition_sign (ownerguid, petitionguid, playerguid, player_account) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC); + PREPARE_STATEMENT(CHAR_UPD_ACCOUNT_ONLINE, "UPDATE characters SET online = 0 WHERE account = ?", CONNECTION_ASYNC); } diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index 219ee525ae1..636a8221d85 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -289,6 +289,12 @@ enum CharacterDatabaseStatements CHAR_ADD_CHARACTER, CHAR_UPD_CHARACTER, + CHAR_UPDATE_AT_LOGIN_FLAG, + CHAR_ADD_BUG_REPORT, + CHAR_UPD_PETITION_NAME, + CHAR_ADD_PETITION_SIGNATURE, + CHAR_UPD_ACCOUNT_ONLINE, + MAX_CHARACTERDATABASE_STATEMENTS, }; diff --git a/src/server/shared/Database/Implementation/LoginDatabase.cpp b/src/server/shared/Database/Implementation/LoginDatabase.cpp index 5e47d5c8495..9a7514ff053 100755 --- a/src/server/shared/Database/Implementation/LoginDatabase.cpp +++ b/src/server/shared/Database/Implementation/LoginDatabase.cpp @@ -49,4 +49,10 @@ void LoginDatabaseConnection::DoPrepareStatements() PREPARE_STATEMENT(LOGIN_ADD_REALM_CHARS, "INSERT INTO realmcharacters (realmid, acctid, numchars) SELECT realmlist.id, account.id, 0 FROM realmlist, account LEFT JOIN realmcharacters ON acctid=account.id WHERE acctid IS NULL", CONNECTION_ASYNC); PREPARE_STATEMENT(LOGIN_DEL_OLD_BANS, "DELETE FROM ip_banned WHERE unbandate <= UNIX_TIMESTAMP() AND unbandate<>bandate", CONNECTION_ASYNC); PREPARE_STATEMENT(LOGIN_DEL_OLD_IP_BANS, "DELETE FROM ip_banned WHERE unbandate <= UNIX_TIMESTAMP() AND unbandate<>bandate", CONNECTION_ASYNC); + PREPARE_STATEMENT(LOGIN_UPDATE_EXPANSION, "UPDATE account SET expansion = ? WHERE id = ?", CONNECTION_ASYNC); + PREPARE_STATEMENT(LOGIN_UPDATE_ACCOUNT_LOCK, "UPDATE account SET locked = ? WHERE id = ?", CONNECTION_ASYNC); + PREPARE_STATEMENT(LOGIN_ADD_LOG, "INSERT INTO logs (time, realm, type, string) VALUES (UNIX_TIMESTAMP(), ? , ?, ?)", CONNECTION_ASYNC); + PREPARE_STATEMENT(LOGIN_UPDATE_USERNAME, "UPDATE account SET v = 0, s = 0, username = ?, sha_pass_hash = ? WHERE id = ?", CONNECTION_ASYNC); + PREPARE_STATEMENT(LOGIN_UPDATE_PASSWORD, "UPDATE account SET v = 0, s = 0, sha_pass_hash = ? WHERE id = ?", CONNECTION_ASYNC); + PREPARE_STATEMENT(LOGIN_UPDATE_MUTE_TIME, "UPDATE account SET mutetime = ? WHERE id = ?", CONNECTION_ASYNC); } diff --git a/src/server/shared/Database/Implementation/LoginDatabase.h b/src/server/shared/Database/Implementation/LoginDatabase.h index b8adfcabbee..96b437372d6 100755 --- a/src/server/shared/Database/Implementation/LoginDatabase.h +++ b/src/server/shared/Database/Implementation/LoginDatabase.h @@ -69,6 +69,12 @@ enum LoginDatabaseStatements LOGIN_ADD_REALM_CHARS, LOGIN_DEL_OLD_BANS, LOGIN_DEL_OLD_IP_BANS, + LOGIN_UPDATE_EXPANSION, + LOGIN_UPDATE_ACCOUNT_LOCK, + LOGIN_ADD_LOG, + LOGIN_UPDATE_USERNAME, + LOGIN_UPDATE_PASSWORD, + LOGIN_UPDATE_MUTE_TIME, MAX_LOGINDATABASE_STATEMENTS, }; diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp index 697e7616c40..11f2fc090b1 100755 --- a/src/server/shared/Logging/Log.cpp +++ b/src/server/shared/Logging/Log.cpp @@ -370,13 +370,17 @@ void Log::outDB(LogTypes type, const char * str) if (!str || type >= MAX_LOG_TYPES) return; - std::string new_str(str); - if (new_str.empty()) + std::string logStr(str); + if (logStr.empty()) return; - LoginDatabase.EscapeString(new_str); - LoginDatabase.PExecute("INSERT INTO logs (time, realm, type, string) " - "VALUES (" UI64FMTD ", %u, %u, '%s');", uint64(time(0)), realm, type, new_str.c_str()); + PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_ADD_LOG); + + stmt->setInt32(0, realm); + stmt->setInt32(1, type); + stmt->setString(2, logStr); + + LoginDatabase.Execute(stmt); } void Log::outString(const char * str, ...) -- cgit v1.2.3 From 996364752c96b80b3903177693277ef3fbf6dab8 Mon Sep 17 00:00:00 2001 From: Spp Date: Wed, 28 Dec 2011 10:42:43 +0100 Subject: Core/Scripts: Replace rand with urand in most cases (using regexp) Used: perl -pi -e 's/([0-9]+) \+ rand\(\)\%([0-9]+)/"urand(".$1.", ".($1+$2).")"/ge' --- .../BlackwingLair/boss_flamegor.cpp | 2 +- .../EasternKingdoms/Karazhan/bosses_opera.cpp | 2 +- .../MagistersTerrace/boss_priestess_delrissa.cpp | 2 +- .../MagistersTerrace/boss_selin_fireheart.cpp | 10 +++---- .../EasternKingdoms/ScarletEnclave/chapter2.cpp | 6 ++-- .../EasternKingdoms/ScarletEnclave/chapter5.cpp | 12 ++++---- .../ScarletMonastery/boss_arcanist_doan.cpp | 2 +- .../ScarletMonastery/boss_bloodmage_thalnos.cpp | 2 +- .../ScarletMonastery/boss_interrogator_vishas.cpp | 2 +- .../Scholomance/boss_darkmaster_gandling.cpp | 6 ++-- .../Scholomance/boss_jandice_barov.cpp | 4 +-- .../Stratholme/boss_dathrohan_balnazzar.cpp | 4 +-- .../SunwellPlateau/boss_kalecgos.cpp | 2 +- .../EasternKingdoms/ZulAman/boss_akilzon.cpp | 8 +++--- .../EasternKingdoms/ZulAman/boss_halazzi.cpp | 2 +- .../EasternKingdoms/ZulAman/boss_nalorakk.cpp | 32 +++++++++++----------- .../EasternKingdoms/ZulAman/boss_zuljin.cpp | 6 ++-- .../EasternKingdoms/ZulGurub/boss_gahzranka.cpp | 6 ++-- .../EasternKingdoms/ZulGurub/boss_grilek.cpp | 8 +++--- .../EasternKingdoms/ZulGurub/boss_hakkar.cpp | 10 +++---- .../EasternKingdoms/ZulGurub/boss_hazzarah.cpp | 12 ++++---- .../EasternKingdoms/ZulGurub/boss_jeklik.cpp | 14 +++++----- .../EasternKingdoms/ZulGurub/boss_jindo.cpp | 10 +++---- .../EasternKingdoms/ZulGurub/boss_mandokir.cpp | 2 +- .../EasternKingdoms/ZulGurub/boss_marli.cpp | 6 ++-- .../EasternKingdoms/ZulGurub/boss_renataki.cpp | 12 ++++---- .../EasternKingdoms/ZulGurub/boss_thekal.cpp | 10 +++---- .../EasternKingdoms/ZulGurub/boss_wushoolay.cpp | 8 +++--- .../scripts/EasternKingdoms/eversong_woods.cpp | 6 ++-- .../CavernsOfTime/BattleForMountHyjal/hyjal.cpp | 10 +++---- .../boss_captain_skarloc.cpp | 8 +++--- .../EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp | 6 ++-- .../boss_amnennar_the_coldbringer.cpp | 2 +- .../Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp | 20 +++++++------- .../Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp | 12 ++++---- .../Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp | 14 +++++----- .../Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp | 22 +++++++-------- .../Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp | 26 +++++++++--------- .../Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp | 8 +++--- .../TempleOfAhnQiraj/boss_twinemperors.cpp | 14 +++++----- src/server/scripts/Kalimdor/azuremyst_isle.cpp | 4 +-- src/server/scripts/Kalimdor/boss_azuregos.cpp | 16 +++++------ .../Northrend/Naxxramas/boss_anubrekhan.cpp | 2 +- .../scripts/Northrend/Naxxramas/boss_noth.cpp | 8 +++--- .../Ulduar/HallsOfLightning/boss_bjarngrim.cpp | 30 ++++++++++---------- .../Ulduar/HallsOfLightning/boss_loken.cpp | 4 +-- .../Ulduar/HallsOfStone/boss_krystallus.cpp | 16 +++++------ .../Ulduar/HallsOfStone/boss_maiden_of_grief.cpp | 12 ++++---- .../Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp | 14 +++++----- .../Ulduar/HallsOfStone/halls_of_stone.cpp | 4 +-- .../Northrend/Ulduar/Ulduar/boss_algalon.cpp | 2 +- .../AuchenaiCrypts/boss_exarch_maladaar.cpp | 2 +- .../ManaTombs/boss_nexusprince_shaffar.cpp | 10 +++---- .../SethekkHalls/boss_darkweaver_syth.cpp | 8 +++--- .../ShadowLabyrinth/boss_ambassador_hellmaw.cpp | 8 +++--- .../boss_blackheart_the_inciter.cpp | 4 +-- .../ShadowLabyrinth/boss_grandmaster_vorpil.cpp | 4 +-- .../Auchindoun/ShadowLabyrinth/boss_murmur.cpp | 6 ++-- .../scripts/Outland/BlackTemple/boss_illidan.cpp | 24 ++++++++-------- .../Outland/BlackTemple/boss_mother_shahraz.cpp | 6 ++-- .../BlackTemple/boss_reliquary_of_souls.cpp | 4 +-- .../Outland/BlackTemple/boss_teron_gorefiend.cpp | 8 +++--- .../Outland/BlackTemple/illidari_council.cpp | 14 +++++----- .../SerpentShrine/boss_leotheras_the_blind.cpp | 8 +++--- .../scripts/Outland/GruulsLair/boss_gruul.cpp | 2 +- .../Outland/GruulsLair/boss_high_king_maulgar.cpp | 10 +++---- .../MagtheridonsLair/boss_magtheridon.cpp | 14 +++++----- .../Mechanar/boss_gatewatcher_ironhand.cpp | 4 +-- .../Mechanar/boss_nethermancer_sepethrea.cpp | 14 +++++----- .../Mechanar/boss_pathaleon_the_calculator.cpp | 22 +++++++-------- .../TempestKeep/botanica/boss_warp_splinter.cpp | 8 +++--- 71 files changed, 321 insertions(+), 321 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp index 4e44a70475f..a7c984fa536 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp @@ -70,7 +70,7 @@ public: if (ShadowFlame_Timer <= diff) { DoCast(me->getVictim(), SPELL_SHADOWFLAME); - ShadowFlame_Timer = 15000 + rand()%7000; + ShadowFlame_Timer = urand(15000, 22000); } else ShadowFlame_Timer -= diff; //WingBuffet_Timer diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp index 8454150d830..389f0d0a959 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp @@ -824,7 +824,7 @@ public: void Reset() { ChaseTimer = 30000; - FearTimer = 25000 + rand()%10000; + FearTimer = urand(25000, 35000); SwipeTimer = 5000; HoodGUID = 0; diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp index 55254a3b8ee..bf58d6f2853 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp @@ -467,7 +467,7 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI if (ResetThreatTimer <= diff) { DoResetThreat(); - ResetThreatTimer = 5000 + rand()%15000; + ResetThreatTimer = urand(5000, 20000); } else ResetThreatTimer -= diff; } }; diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp index 305ce97687a..93b0b45a3e3 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp @@ -122,13 +122,13 @@ public: instance->SetData(DATA_SELIN_EVENT, NOT_STARTED); } else sLog->outError(ERROR_INST_DATA); - DrainLifeTimer = 3000 + rand()%4000; + DrainLifeTimer = urand(3000, 7000); DrainManaTimer = DrainLifeTimer + 5000; FelExplosionTimer = 2100; if (IsHeroic()) - DrainCrystalTimer = 10000 + rand()%5000; + DrainCrystalTimer = urand(10000, 15000); else - DrainCrystalTimer = 20000 + rand()%5000; + DrainCrystalTimer = urand(20000, 25000); EmpowerTimer = 10000; IsDraining = false; @@ -285,9 +285,9 @@ public: { SelectNearestCrystal(); if (IsHeroic()) - DrainCrystalTimer = 10000 + rand()%5000; + DrainCrystalTimer = urand(10000, 15000); else - DrainCrystalTimer = 20000 + rand()%5000; + DrainCrystalTimer = urand(20000, 25000); } else DrainCrystalTimer -= diff; } diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index 8179c9fccaa..6d316eff94f 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -482,21 +482,21 @@ public: { Shout(); DoCast(me, SPELL_RENEW); - uiRenew_timer = 1000 + rand()%5000; + uiRenew_timer = urand(1000, 6000); } else uiRenew_timer -= diff; if (uiInquisitor_Penance_timer <= diff) { Shout(); DoCast(me->getVictim(), SPELL_INQUISITOR_PENANCE); - uiInquisitor_Penance_timer = 2000 + rand()%5000; + uiInquisitor_Penance_timer = urand(2000, 7000); } else uiInquisitor_Penance_timer -= diff; if (uiValroth_Smite_timer <= diff) { Shout(); DoCast(me->getVictim(), SPELL_VALROTH_SMITE); - uiValroth_Smite_timer = 1000 + rand()%5000; + uiValroth_Smite_timer = urand(1000, 6000); } else uiValroth_Smite_timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 3ee71ce3609..5b89651f2b0 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -1352,31 +1352,31 @@ public: if (uiAnti_magic_zone <= diff) { DoCast(me, SPELL_ANTI_MAGIC_ZONE1); - uiAnti_magic_zone = 25000 + rand()%5000; + uiAnti_magic_zone = urand(25000, 30000); } else uiAnti_magic_zone -= diff; if (uiDeath_strike <= diff) { DoCast(me->getVictim(), SPELL_DEATH_STRIKE); - uiDeath_strike = 5000 + rand()%5000; + uiDeath_strike = urand(5000, 10000); } else uiDeath_strike -= diff; if (uiDeath_embrace <= diff) { DoCast(me->getVictim(), SPELL_DEATH_EMBRACE); - uiDeath_embrace = 5000 + rand()%5000; + uiDeath_embrace = urand(5000, 10000); } else uiDeath_embrace -= diff; if (uiIcy_touch <= diff) { DoCast(me->getVictim(), SPELL_ICY_TOUCH1); - uiIcy_touch = 5000 + rand()%5000; + uiIcy_touch = urand(5000, 10000); } else uiIcy_touch -= diff; if (uiUnholy_blight <= diff) { DoCast(me->getVictim(), SPELL_UNHOLY_BLIGHT); - uiUnholy_blight = 5000 + rand()%5000; + uiUnholy_blight = urand(5000, 10000); } else uiUnholy_blight -= diff; if (uiFight_speech <= diff) @@ -1387,7 +1387,7 @@ public: SAY_LIGHT_OF_DAWN18, SAY_LIGHT_OF_DAWN19, SAY_LIGHT_OF_DAWN20, SAY_LIGHT_OF_DAWN21, SAY_LIGHT_OF_DAWN22, SAY_LIGHT_OF_DAWN23, SAY_LIGHT_OF_DAWN24), me); - uiFight_speech = 15000 + rand()%5000; + uiFight_speech = urand(15000, 20000); } else uiFight_speech -= diff; // Check spawns diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp index a5fe8a5c6db..25295e62ff3 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp @@ -111,7 +111,7 @@ public: if (AoESilence_Timer <= diff) { DoCast(me->getVictim(), SPELL_AOESILENCE); - AoESilence_Timer = 15000 + rand()%5000; + AoESilence_Timer = urand(15000, 20000); } else AoESilence_Timer -= diff; //ArcaneExplosion_Timer diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp index 16875dce85f..733b3a91f93 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp @@ -92,7 +92,7 @@ public: if (FlameShock_Timer <= diff) { DoCast(me->getVictim(), SPELL_FLAMESHOCK); - FlameShock_Timer = 10000 + rand()%5000; + FlameShock_Timer = urand(10000, 15000); } else FlameShock_Timer -= diff; //FlameSpike_Timer diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp index 2277d867455..e66c639896e 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp @@ -107,7 +107,7 @@ public: if (ShadowWordPain_Timer <= diff) { DoCast(me->getVictim(), SPELL_SHADOWWORDPAIN); - ShadowWordPain_Timer = 5000 + rand()%10000; + ShadowWordPain_Timer = urand(5000, 15000); } else ShadowWordPain_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp index 12dd67e009d..d930dd4a14c 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp @@ -108,14 +108,14 @@ public: if (ShadowShield_Timer <= diff) { DoCast(me, SPELL_SHADOWSHIELD); - ShadowShield_Timer = 14000 + rand()%14000; + ShadowShield_Timer = urand(14000, 28000); } else ShadowShield_Timer -= diff; //Curse_Timer if (Curse_Timer <= diff) { DoCast(me->getVictim(), SPELL_CURSE); - Curse_Timer = 15000 + rand()%12000; + Curse_Timer = urand(15000, 27000); } else Curse_Timer -= diff; //Teleporting Random Target to one of the six pre boss rooms and spawn 3-4 skeletons near the gamer. @@ -214,7 +214,7 @@ public: break; } } - Teleport_Timer = 20000 + rand()%15000; + Teleport_Timer = urand(20000, 35000); } else Teleport_Timer -= diff; } diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp index 9dd9f1fedb5..2d1d78193ed 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp @@ -171,7 +171,7 @@ public: void Reset() { - Cleave_Timer = 2000 + rand()%6000; + Cleave_Timer = urand(2000, 8000); me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true); } @@ -192,7 +192,7 @@ public: DoCast(me->getVictim(), SPELL_CLEAVE); //5-8 seconds - Cleave_Timer = 5000 + rand()%3000; + Cleave_Timer = urand(5000, 8000); } else Cleave_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp index 17ea8a04293..3cbf00f291d 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp @@ -131,7 +131,7 @@ public: if (m_uiMindBlast_Timer <= uiDiff) { DoCast(me->getVictim(), SPELL_MINDBLAST); - m_uiMindBlast_Timer = 15000 + rand()%5000; + m_uiMindBlast_Timer = urand(15000, 20000); } else m_uiMindBlast_Timer -= uiDiff; //CrusadersHammer @@ -173,7 +173,7 @@ public: if (m_uiMindBlast_Timer <= uiDiff) { DoCast(me->getVictim(), SPELL_MINDBLAST); - m_uiMindBlast_Timer = 15000 + rand()%5000; + m_uiMindBlast_Timer = urand(15000, 20000); } else m_uiMindBlast_Timer -= uiDiff; //ShadowShock diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index df3bb5d4525..747d9e29ec1 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -612,7 +612,7 @@ public: KalecGUID = 0; } - ShadowBoltTimer = 7000 + rand()%3 * 1000; + ShadowBoltTimer = urand(7, 10) * 1000; AgonyCurseTimer = 20000; CorruptionStrikeTimer = 13000; CheckTimer = 1000; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index 413897c94e8..ffccfbce2b6 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -296,13 +296,13 @@ class boss_akilzon : public CreatureScript Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1); if (!target) target = me->getVictim(); DoCast(target, SPELL_GUST_OF_WIND); - GustOfWind_Timer = (20+rand()%10)*1000; //20 to 30 seconds(bosskillers) + GustOfWind_Timer = urand(20, 30) * 1000; //20 to 30 seconds(bosskillers) } else GustOfWind_Timer -= diff; if (CallLighting_Timer <= diff) { DoCast(me->getVictim(), SPELL_CALL_LIGHTNING); - CallLighting_Timer = (12 + rand()%5)*1000; //totaly random timer. can't find any info on this + CallLighting_Timer = urand(12, 17) * 1000; //totaly random timer. can't find any info on this } else CallLighting_Timer -= diff; if (!isRaining && ElectricalStorm_Timer < uint32(8000 + rand() % 5000)) @@ -406,7 +406,7 @@ class mob_akilzon_eagle : public CreatureScript void Reset() { - EagleSwoop_Timer = 5000 + rand()%5000; + EagleSwoop_Timer = urand(5000, 10000); arrived = true; TargetGUID = 0; me->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING); @@ -425,7 +425,7 @@ class mob_akilzon_eagle : public CreatureScript DoCast(target, SPELL_EAGLE_SWOOP, true); TargetGUID = 0; me->SetSpeed(MOVE_RUN, 1.2f); - EagleSwoop_Timer = 5000 + rand()%5000; + EagleSwoop_Timer = urand(5000, 10000); } } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp index a3c7aae4132..80c31d42a46 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp @@ -263,7 +263,7 @@ class boss_halazzi : public CreatureScript DoCast(target, SPELL_EARTHSHOCK); else DoCast(target, SPELL_FLAMESHOCK); - ShockTimer = 10000 + rand()%5000; + ShockTimer = urand(10000, 15000); } } else ShockTimer -= diff; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp index 3ff465a3c1d..0ae8a9bc5c4 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp @@ -145,10 +145,10 @@ class boss_nalorakk : public CreatureScript if (instance) instance->SetData(DATA_NALORAKKEVENT, NOT_STARTED); - Surge_Timer = 15000 + rand()%5000; - BrutalSwipe_Timer = 7000 + rand()%5000; - Mangle_Timer = 10000 + rand()%5000; - ShapeShift_Timer = 45000 + rand()%5000; + Surge_Timer = urand(15000, 20000); + BrutalSwipe_Timer = urand(7000, 12000); + Mangle_Timer = urand(10000, 15000); + ShapeShift_Timer = urand(45000, 50000); Berserk_Timer = 600000; inBearForm = false; @@ -371,10 +371,10 @@ class boss_nalorakk : public CreatureScript me->MonsterYell(YELL_SHIFTEDTOTROLL, LANG_UNIVERSAL, 0); DoPlaySoundToSet(me, SOUND_YELL_TOTROLL); me->RemoveAurasDueToSpell(SPELL_BEARFORM); - Surge_Timer = 15000 + rand()%5000; - BrutalSwipe_Timer = 7000 + rand()%5000; - Mangle_Timer = 10000 + rand()%5000; - ShapeShift_Timer = 45000 + rand()%5000; + Surge_Timer = urand(15000, 20000); + BrutalSwipe_Timer = urand(7000, 12000); + Mangle_Timer = urand(10000, 15000); + ShapeShift_Timer = urand(45000, 50000); inBearForm = false; } else @@ -385,8 +385,8 @@ class boss_nalorakk : public CreatureScript DoCast(me, SPELL_BEARFORM, true); LaceratingSlash_Timer = 2000; // dur 18s RendFlesh_Timer = 3000; // dur 5s - DeafeningRoar_Timer = 5000 + rand()%5000; // dur 2s - ShapeShift_Timer = 20000 + rand()%5000; // dur 30s + DeafeningRoar_Timer = urand(5000, 10000); // dur 2s + ShapeShift_Timer = urand(20000, 25000); // dur 30s inBearForm = true; } } else ShapeShift_Timer -= diff; @@ -396,7 +396,7 @@ class boss_nalorakk : public CreatureScript if (BrutalSwipe_Timer <= diff) { DoCast(me->getVictim(), SPELL_BRUTALSWIPE); - BrutalSwipe_Timer = 7000 + rand()%5000; + BrutalSwipe_Timer = urand(7000, 12000); } else BrutalSwipe_Timer -= diff; if (Mangle_Timer <= diff) @@ -406,7 +406,7 @@ class boss_nalorakk : public CreatureScript DoCast(me->getVictim(), SPELL_MANGLE); Mangle_Timer = 1000; } - else Mangle_Timer = 10000 + rand()%5000; + else Mangle_Timer = urand(10000, 15000); } else Mangle_Timer -= diff; if (Surge_Timer <= diff) @@ -416,7 +416,7 @@ class boss_nalorakk : public CreatureScript Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 45, true); if (target) DoCast(target, SPELL_SURGE); - Surge_Timer = 15000 + rand()%5000; + Surge_Timer = urand(15000, 20000); } else Surge_Timer -= diff; } else @@ -424,19 +424,19 @@ class boss_nalorakk : public CreatureScript if (LaceratingSlash_Timer <= diff) { DoCast(me->getVictim(), SPELL_LACERATINGSLASH); - LaceratingSlash_Timer = 18000 + rand()%5000; + LaceratingSlash_Timer = urand(18000, 23000); } else LaceratingSlash_Timer -= diff; if (RendFlesh_Timer <= diff) { DoCast(me->getVictim(), SPELL_RENDFLESH); - RendFlesh_Timer = 5000 + rand()%5000; + RendFlesh_Timer = urand(5000, 10000); } else RendFlesh_Timer -= diff; if (DeafeningRoar_Timer <= diff) { DoCast(me->getVictim(), SPELL_DEAFENINGROAR); - DeafeningRoar_Timer = 15000 + rand()%5000; + DeafeningRoar_Timer = urand(15000, 20000); } else DeafeningRoar_Timer -= diff; } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp index ae6a25d2c17..5dbe3fc9409 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp @@ -430,7 +430,7 @@ class boss_zuljin : public CreatureScript if (Whirlwind_Timer <= diff) { DoCast(me, SPELL_WHIRLWIND); - Whirlwind_Timer = 15000 + rand()%5000; + Whirlwind_Timer = urand(15000, 20000); } else Whirlwind_Timer -= diff; if (Grievous_Throw_Timer <= diff) @@ -489,7 +489,7 @@ class boss_zuljin : public CreatureScript ++Claw_Counter; if (Claw_Counter == 12) { - Claw_Rage_Timer = 15000 + rand()%5000; + Claw_Rage_Timer = urand(15000, 20000); me->SetSpeed(MOVE_RUN, 1.2f); AttackStart(Unit::GetUnit(*me, TankGUID)); TankGUID = 0; @@ -537,7 +537,7 @@ class boss_zuljin : public CreatureScript ++Claw_Counter; if (Claw_Counter == 9) { - Lynx_Rush_Timer = 15000 + rand()%5000; + Lynx_Rush_Timer = urand(15000, 20000); me->SetSpeed(MOVE_RUN, 1.2f); AttackStart(Unit::GetUnit(*me, TankGUID)); TankGUID = 0; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp index c515b625e6f..5ca43e9268e 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp @@ -66,7 +66,7 @@ class boss_gahzranka : public CreatureScript if (Frostbreath_Timer <= diff) { DoCast(me->getVictim(), SPELL_FROSTBREATH); - Frostbreath_Timer = 7000 + rand()%4000; + Frostbreath_Timer = urand(7000, 11000); } else Frostbreath_Timer -= diff; //MassiveGeyser_Timer @@ -75,14 +75,14 @@ class boss_gahzranka : public CreatureScript DoCast(me->getVictim(), SPELL_MASSIVEGEYSER); DoResetThreat(); - MassiveGeyser_Timer = 22000 + rand()%10000; + MassiveGeyser_Timer = urand(22000, 32000); } else MassiveGeyser_Timer -= diff; //Slam_Timer if (Slam_Timer <= diff) { DoCast(me->getVictim(), SPELL_SLAM); - Slam_Timer = 12000 + rand()%8000; + Slam_Timer = urand(12000, 20000); } else Slam_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index e01dafd4777..d3922602a17 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -47,8 +47,8 @@ class boss_grilek : public CreatureScript void Reset() { - Avartar_Timer = 15000 + rand()%10000; - GroundTremor_Timer = 8000 + rand()%8000; + Avartar_Timer = urand(15000, 25000); + GroundTremor_Timer = urand(8000, 16000); } void EnterCombat(Unit* /*who*/) @@ -75,14 +75,14 @@ class boss_grilek : public CreatureScript if (target) AttackStart(target); - Avartar_Timer = 25000 + rand()%10000; + Avartar_Timer = urand(25000, 35000); } else Avartar_Timer -= diff; //GroundTremor_Timer if (GroundTremor_Timer <= diff) { DoCast(me->getVictim(), SPELL_GROUNDTREMOR); - GroundTremor_Timer = 12000 + rand()%4000; + GroundTremor_Timer = urand(12000, 16000); } else GroundTremor_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 77b8955158a..484499b1567 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -126,7 +126,7 @@ class boss_hakkar : public CreatureScript if (CorruptedBlood_Timer <= diff) { DoCast(me->getVictim(), SPELL_CORRUPTEDBLOOD); - CorruptedBlood_Timer = 30000 + rand()%15000; + CorruptedBlood_Timer = urand(30000, 45000); } else CorruptedBlood_Timer -= diff; //CauseInsanity_Timer @@ -135,7 +135,7 @@ class boss_hakkar : public CreatureScript if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_CAUSEINSANITY); - CauseInsanity_Timer = 35000 + rand()%8000; + CauseInsanity_Timer = urand(35000, 43000); } else CauseInsanity_Timer -= diff;*/ //WillOfHakkar_Timer @@ -144,7 +144,7 @@ class boss_hakkar : public CreatureScript if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_WILLOFHAKKAR); - WillOfHakkar_Timer = 25000 + rand()%10000; + WillOfHakkar_Timer = urand(25000, 35000); } else WillOfHakkar_Timer -= diff; if (!Enraged && Enrage_Timer <= diff) @@ -163,7 +163,7 @@ class boss_hakkar : public CreatureScript if (AspectOfJeklik_Timer <= diff) { DoCast(me->getVictim(), SPELL_ASPECT_OF_JEKLIK); - AspectOfJeklik_Timer = 10000 + rand()%4000; + AspectOfJeklik_Timer = urand(10000, 14000); } else AspectOfJeklik_Timer -= diff; } } @@ -234,7 +234,7 @@ class boss_hakkar : public CreatureScript DoCast(me, SPELL_ASPECT_OF_ARLOKK); DoResetThreat(); - AspectOfArlokk_Timer = 10000 + rand()%5000; + AspectOfArlokk_Timer = urand(10000, 15000); } else AspectOfArlokk_Timer -= diff; } } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index b8f4b0a50a1..73fa91dbdd8 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -48,9 +48,9 @@ class boss_hazzarah : public CreatureScript void Reset() { - ManaBurn_Timer = 4000 + rand()%6000; - Sleep_Timer = 10000 + rand()%8000; - Illusions_Timer = 10000 + rand()%8000; + ManaBurn_Timer = urand(4000, 10000); + Sleep_Timer = urand(10000, 18000); + Illusions_Timer = urand(10000, 18000); } void EnterCombat(Unit* /*who*/) @@ -66,14 +66,14 @@ class boss_hazzarah : public CreatureScript if (ManaBurn_Timer <= diff) { DoCast(me->getVictim(), SPELL_MANABURN); - ManaBurn_Timer = 8000 + rand()%8000; + ManaBurn_Timer = urand(8000, 16000); } else ManaBurn_Timer -= diff; //Sleep_Timer if (Sleep_Timer <= diff) { DoCast(me->getVictim(), SPELL_SLEEP); - Sleep_Timer = 12000 + rand()%8000; + Sleep_Timer = urand(12000, 20000); } else Sleep_Timer -= diff; //Illusions_Timer @@ -93,7 +93,7 @@ class boss_hazzarah : public CreatureScript Illusion->AI()->AttackStart(target); } - Illusions_Timer = 15000 + rand()%10000; + Illusions_Timer = urand(15000, 25000); } else Illusions_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp index fcb492d47f7..87dc0e372f6 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp @@ -119,19 +119,19 @@ class boss_jeklik : public CreatureScript AttackStart(target); } - Charge_Timer = 15000 + rand()%15000; + Charge_Timer = urand(15000, 30000); } else Charge_Timer -= diff; if (SonicBurst_Timer <= diff) { DoCast(me->getVictim(), SPELL_SONICBURST); - SonicBurst_Timer = 8000 + rand()%5000; + SonicBurst_Timer = urand(8000, 13000); } else SonicBurst_Timer -= diff; if (Screech_Timer <= diff) { DoCast(me->getVictim(), SPELL_SCREECH); - Screech_Timer = 18000 + rand()%8000; + Screech_Timer = urand(18000, 26000); } else Screech_Timer -= diff; if (SpawnBats_Timer <= diff) @@ -168,7 +168,7 @@ class boss_jeklik : public CreatureScript if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { DoCast(target, SPELL_SHADOW_WORD_PAIN); - ShadowWordPain_Timer = 12000 + rand()%6000; + ShadowWordPain_Timer = urand(12000, 18000); } }ShadowWordPain_Timer -=diff; @@ -182,14 +182,14 @@ class boss_jeklik : public CreatureScript { me->InterruptNonMeleeSpells(false); DoCast(me->getVictim(), SPELL_CHAIN_MIND_FLAY); - ChainMindFlay_Timer = 15000 + rand()%15000; + ChainMindFlay_Timer = urand(15000, 30000); }ChainMindFlay_Timer -=diff; if (GreaterHeal_Timer <= diff) { me->InterruptNonMeleeSpells(false); DoCast(me, SPELL_GREATERHEAL); - GreaterHeal_Timer = 25000 + rand()%10000; + GreaterHeal_Timer = urand(25000, 35000); }GreaterHeal_Timer -=diff; if (SpawnFlyingBats_Timer <= diff) @@ -202,7 +202,7 @@ class boss_jeklik : public CreatureScript if (FlyingBat) FlyingBat->AI()->AttackStart(target); - SpawnFlyingBats_Timer = 10000 + rand()%5000; + SpawnFlyingBats_Timer = urand(10000, 15000); } else SpawnFlyingBats_Timer -=diff; } else diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index 7c8e53038ab..9c82c3eddfb 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -83,7 +83,7 @@ class boss_jindo : public CreatureScript if (BrainWashTotem_Timer <= diff) { DoCast(me, SPELL_BRAINWASHTOTEM); - BrainWashTotem_Timer = 18000 + rand()%8000; + BrainWashTotem_Timer = urand(18000, 26000); } else BrainWashTotem_Timer -= diff; //HealingWard_Timer @@ -91,7 +91,7 @@ class boss_jindo : public CreatureScript { //DoCast(me, SPELL_POWERFULLHEALINGWARD); me->SummonCreature(14987, me->GetPositionX()+3, me->GetPositionY()-2, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000); - HealingWard_Timer = 14000 + rand()%6000; + HealingWard_Timer = urand(14000, 20000); } else HealingWard_Timer -= diff; //Hex_Timer @@ -102,7 +102,7 @@ class boss_jindo : public CreatureScript if (DoGetThreat(me->getVictim())) DoModifyThreatPercent(me->getVictim(), -80); - Hex_Timer = 12000 + rand()%8000; + Hex_Timer = urand(12000, 20000); } else Hex_Timer -= diff; //Casting the delusion curse with a shade. So shade will attack the same target with the curse. @@ -117,7 +117,7 @@ class boss_jindo : public CreatureScript Shade->AI()->AttackStart(target); } - Delusions_Timer = 4000 + rand()%8000; + Delusions_Timer = urand(4000, 12000); } else Delusions_Timer -= diff; //Teleporting a random gamer and spawning 9 skeletons that will attack this gamer @@ -162,7 +162,7 @@ class boss_jindo : public CreatureScript Skeletons->AI()->AttackStart(target); } - Teleport_Timer = 15000 + rand()%8000; + Teleport_Timer = urand(15000, 23000); } else Teleport_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index 7dc357f692a..06ae34b79b2 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -325,7 +325,7 @@ class mob_ohgan : public CreatureScript if (SunderArmor_Timer <= diff) { DoCast(me->getVictim(), SPELL_SUNDERARMOR); - SunderArmor_Timer = 10000 + rand()%5000; + SunderArmor_Timer = urand(10000, 15000); } else SunderArmor_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp index f6704a50e6f..5dafa54a2ba 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp @@ -105,13 +105,13 @@ class boss_marli : public CreatureScript if (PoisonVolley_Timer <= diff) { DoCast(me->getVictim(), SPELL_POISONVOLLEY); - PoisonVolley_Timer = 10000 + rand()%10000; + PoisonVolley_Timer = urand(10000, 20000); } else PoisonVolley_Timer -= diff; if (!PhaseTwo && Aspect_Timer <= diff) { DoCast(me->getVictim(), SPELL_ASPECT_OF_MARLI); - Aspect_Timer = 13000 + rand()%5000; + Aspect_Timer = urand(13000, 18000); } else Aspect_Timer -= diff; if (!Spawned && SpawnStartSpiders_Timer <= diff) @@ -149,7 +149,7 @@ class boss_marli : public CreatureScript Creature* Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); if (Spider) Spider->AI()->AttackStart(target); - SpawnSpider_Timer = 12000 + rand()%5000; + SpawnSpider_Timer = urand(12000, 17000); } else SpawnSpider_Timer -= diff; if (!PhaseTwo && Transform_Timer <= diff) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp index bbff6a55ffb..c3bf09ee28d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp @@ -55,11 +55,11 @@ class boss_renataki : public CreatureScript void Reset() { - Invisible_Timer = 8000 + rand()%10000; + Invisible_Timer = urand(8000, 18000); Ambush_Timer = 3000; Visible_Timer = 4000; - Aggro_Timer = 15000 + rand()%10000; - ThousandBlades_Timer = 4000 + rand()%4000; + Aggro_Timer = urand(15000, 25000); + ThousandBlades_Timer = urand(4000, 8000); Invisible = false; Ambushed = false; @@ -85,7 +85,7 @@ class boss_renataki : public CreatureScript me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); Invisible = true; - Invisible_Timer = 15000 + rand()%15000; + Invisible_Timer = urand(15000, 30000); } else Invisible_Timer -= diff; if (Invisible) @@ -135,13 +135,13 @@ class boss_renataki : public CreatureScript if (target) AttackStart(target); - Aggro_Timer = 7000 + rand()%13000; + Aggro_Timer = urand(7000, 20000); } else Aggro_Timer -= diff; if (ThousandBlades_Timer <= diff) { DoCast(me->getVictim(), SPELL_THOUSANDBLADES); - ThousandBlades_Timer = 7000 + rand()%5000; + ThousandBlades_Timer = urand(7000, 12000); } else ThousandBlades_Timer -= diff; } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index 4fbb5cd1109..743ec211529 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -167,13 +167,13 @@ class boss_thekal : public CreatureScript if (!PhaseTwo && MortalCleave_Timer <= diff) { DoCast(me->getVictim(), SPELL_MORTALCLEAVE); - MortalCleave_Timer = 15000 + rand()%5000; + MortalCleave_Timer = urand(15000, 20000); } else MortalCleave_Timer -= diff; if (!PhaseTwo && Silence_Timer <= diff) { DoCast(me->getVictim(), SPELL_SILENCE); - Silence_Timer = 20000 + rand()%5000; + Silence_Timer = urand(20000, 25000); } else Silence_Timer -= diff; if (!PhaseTwo && !WasDead && !HealthAbovePct(5)) @@ -226,7 +226,7 @@ class boss_thekal : public CreatureScript AttackStart(target); } - Charge_Timer = 15000 + rand()%7000; + Charge_Timer = urand(15000, 22000); } else Charge_Timer -= diff; if (Frenzy_Timer <= diff) @@ -238,13 +238,13 @@ class boss_thekal : public CreatureScript if (ForcePunch_Timer <= diff) { DoCast(me->getVictim(), SPELL_SILENCE); - ForcePunch_Timer = 16000 + rand()%5000; + ForcePunch_Timer = urand(16000, 21000); } else ForcePunch_Timer -= diff; if (SummonTigers_Timer <= diff) { DoCast(me->getVictim(), SPELL_SUMMONTIGERS); - SummonTigers_Timer = 10000 + rand()%4000; + SummonTigers_Timer = urand(10000, 14000); } else SummonTigers_Timer -= diff; if (HealthBelowPct(11) && !Enraged) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp index 7288d063c21..179935524a8 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp @@ -47,8 +47,8 @@ class boss_wushoolay : public CreatureScript void Reset() { - LightningCloud_Timer = 5000 + rand()%5000; - LightningWave_Timer = 8000 + rand()%8000; + LightningCloud_Timer = urand(5000, 10000); + LightningWave_Timer = urand(8000, 16000); } void EnterCombat(Unit* /*who*/) @@ -64,7 +64,7 @@ class boss_wushoolay : public CreatureScript if (LightningCloud_Timer <= diff) { DoCast(me->getVictim(), SPELL_LIGHTNINGCLOUD); - LightningCloud_Timer = 15000 + rand()%5000; + LightningCloud_Timer = urand(15000, 20000); } else LightningCloud_Timer -= diff; //LightningWave_Timer @@ -74,7 +74,7 @@ class boss_wushoolay : public CreatureScript target = SelectTarget(SELECT_TARGET_RANDOM, 0); if (target) DoCast(target, SPELL_LIGHTNINGWAVE); - LightningWave_Timer = 12000 + rand()%4000; + LightningWave_Timer = urand(12000, 16000); } else LightningWave_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/eversong_woods.cpp b/src/server/scripts/EasternKingdoms/eversong_woods.cpp index d02cce3f17c..d9171308ba6 100644 --- a/src/server/scripts/EasternKingdoms/eversong_woods.cpp +++ b/src/server/scripts/EasternKingdoms/eversong_woods.cpp @@ -204,7 +204,7 @@ public: if (timerJustice <= diff) { DoCast(me, SPELL_SEAL_OF_JUSTICE); - timerJustice = 10000 + rand()%10000; + timerJustice = urand(10000, 20000); } else timerJustice -= diff; @@ -215,7 +215,7 @@ public: if (timerJudLight <= diff) { DoCast(me, SPELL_JUDGEMENT_OF_LIGHT); - timerJudLight = 10000 + rand()%10000; + timerJudLight = urand(10000, 20000); } else timerJudLight -= diff; @@ -226,7 +226,7 @@ public: if (timerCommand <= diff) { DoCast(me, SPELL_SEAL_OF_COMMAND); - timerCommand = 20000 + rand()%20000; + timerCommand = urand(20000, 40000); } else timerCommand -= diff; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp index f681b245a42..35de4c70214 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp @@ -105,15 +105,15 @@ public: ai->EnterEvadeMode(); ai->Spells[0].SpellId = SPELL_BLIZZARD; - ai->Spells[0].Cooldown = 15000 + rand()%20000; + ai->Spells[0].Cooldown = urand(15000, 35000); ai->Spells[0].TargetType = TARGETTYPE_RANDOM; ai->Spells[1].SpellId = SPELL_PYROBLAST; - ai->Spells[1].Cooldown = 5500 + rand()%4000; + ai->Spells[1].Cooldown = urand(5500, 9500); ai->Spells[1].TargetType = TARGETTYPE_RANDOM; ai->Spells[2].SpellId = SPELL_SUMMON_ELEMENTALS; - ai->Spells[2].Cooldown = 15000 + rand()%30000; + ai->Spells[2].Cooldown = urand(15000, 45000); ai->Spells[2].TargetType = TARGETTYPE_SELF; return ai; @@ -187,11 +187,11 @@ public: ai->EnterEvadeMode(); ai->Spells[0].SpellId = SPELL_CHAIN_LIGHTNING; - ai->Spells[0].Cooldown = 3000 + rand()%5000; + ai->Spells[0].Cooldown = urand(3000, 8000); ai->Spells[0].TargetType = TARGETTYPE_VICTIM; ai->Spells[1].SpellId = SPELL_SUMMON_DIRE_WOLF; - ai->Spells[1].Cooldown = 6000 + rand()%35000; + ai->Spells[1].Cooldown = urand(6000, 41000); ai->Spells[1].TargetType = TARGETTYPE_RANDOM; return ai; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp index f09308a6724..488c7195534 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp @@ -68,9 +68,9 @@ public: void Reset() { - Holy_Light_Timer = 20000 + rand()%10000; + Holy_Light_Timer = urand(20000, 30000); Cleanse_Timer = 10000; - HammerOfJustice_Timer = 20000 + rand()%15000; + HammerOfJustice_Timer = urand(20000, 35000); HolyShield_Timer = 240000; DevotionAura_Timer = 3000; Consecration_Timer = 8000; @@ -134,14 +134,14 @@ public: if (DevotionAura_Timer <= diff) { DoCast(me, SPELL_DEVOTION_AURA); - DevotionAura_Timer = 45000 + rand()%10000; + DevotionAura_Timer = urand(45000, 55000); } else DevotionAura_Timer -= diff; //Consecration if (Consecration_Timer <= diff) { //DoCast(me->getVictim(), SPELL_CONSECRATION); - Consecration_Timer = 5000 + rand()%5000; + Consecration_Timer = urand(5000, 10000); } else Consecration_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp index 5b201e50bcb..9e6957a5e0c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp @@ -68,8 +68,8 @@ public: void Reset() { - SandBreath_Timer = 8000 + rand()%8000; - ImpendingDeath_Timer = 25000 + rand()%5000; + SandBreath_Timer = urand(8000, 16000); + ImpendingDeath_Timer = urand(25000, 30000); WingBuffet_Timer = 35000; Mda_Timer = 40000; } @@ -108,7 +108,7 @@ public: DoScriptText(RAND(SAY_BREATH1, SAY_BREATH2), me); - SandBreath_Timer = 10000 + rand()%10000; + SandBreath_Timer = urand(10000, 20000); } else SandBreath_Timer -= diff; if (ImpendingDeath_Timer <= diff) diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp index 7ade38dba8e..fd1966d106c 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp @@ -61,7 +61,7 @@ public: { AmnenarsWrath_Timer = 8000; FrostBolt_Timer = 1000; - FrostNova_Timer = 10000 + rand()%5000; + FrostNova_Timer = urand(10000, 15000); Spectrals30 = false; Spectrals60 = false; Hp = false; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp index 1a9d3f7a557..34b481c97f4 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp @@ -65,8 +65,8 @@ public: void Reset() { - Cleave_Timer = 4000 + rand()%4000; - ToxicVolley_Timer = 6000 + rand()%6000; + Cleave_Timer = urand(4000, 8000); + ToxicVolley_Timer = urand(6000, 12000); Check_Timer = 2000; VemDead = false; @@ -98,14 +98,14 @@ public: if (Cleave_Timer <= diff) { DoCast(me->getVictim(), SPELL_CLEAVE); - Cleave_Timer = 5000 + rand()%7000; + Cleave_Timer = urand(5000, 12000); } else Cleave_Timer -= diff; //ToxicVolley_Timer if (ToxicVolley_Timer <= diff) { DoCast(me->getVictim(), SPELL_TOXIC_VOLLEY); - ToxicVolley_Timer = 10000 + rand()%5000; + ToxicVolley_Timer = urand(10000, 15000); } else ToxicVolley_Timer -= diff; if (!HealthAbovePct(5) && !Death) @@ -161,8 +161,8 @@ public: void Reset() { - Charge_Timer = 15000 + rand()%12000; - KnockBack_Timer = 8000 + rand()%12000; + Charge_Timer = urand(15000, 27000); + KnockBack_Timer = urand(8000, 20000); Enrage_Timer = 120000; Enraged = false; @@ -202,7 +202,7 @@ public: AttackStart(target); } - Charge_Timer = 8000 + rand()%8000; + Charge_Timer = urand(8000, 16000); } else Charge_Timer -= diff; //KnockBack_Timer @@ -211,7 +211,7 @@ public: DoCast(me->getVictim(), SPELL_KNOCKBACK); if (DoGetThreat(me->getVictim())) DoModifyThreatPercent(me->getVictim(), -80); - KnockBack_Timer = 15000 + rand()%10000; + KnockBack_Timer = urand(15000, 25000); } else KnockBack_Timer -= diff; //Enrage_Timer @@ -254,8 +254,8 @@ public: void Reset() { - Heal_Timer = 25000 + rand()%15000; - Fear_Timer = 12000 + rand()%12000; + Heal_Timer = urand(25000, 40000); + Fear_Timer = urand(12000, 24000); Check_Timer = 2000; VemDead = false; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp index 9d83bfea866..505907cd0f5 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp @@ -63,9 +63,9 @@ public: void Reset() { - MortalWound_Timer = 10000 + rand()%5000; - SpawnHatchlings_Timer = 6000 + rand()%6000; - SpawnSpawns_Timer = 15000 + rand()%30000; + MortalWound_Timer = urand(10000, 15000); + SpawnHatchlings_Timer = urand(6000, 12000); + SpawnSpawns_Timer = urand(15000, 45000); } void SummonSpawn(Unit* victim) @@ -106,7 +106,7 @@ public: if (MortalWound_Timer <= diff) { DoCast(me->getVictim(), SPELL_MORTAL_WOUND); - MortalWound_Timer = 10000 + rand()%10000; + MortalWound_Timer = urand(10000, 20000); } else MortalWound_Timer -= diff; //Summon 1-3 Spawns of Fankriss at random time. @@ -127,7 +127,7 @@ public: SummonSpawn(SelectTarget(SELECT_TARGET_RANDOM, 0)); break; } - SpawnSpawns_Timer = 30000 + rand()%30000; + SpawnSpawns_Timer = urand(30000, 60000); } else SpawnSpawns_Timer -= diff; // Teleporting Random Target to one of the three tunnels and spawn 4 hatchlings near the gamer. @@ -194,7 +194,7 @@ public: break; } } - SpawnHatchlings_Timer = 45000 + rand()%15000; + SpawnHatchlings_Timer = urand(45000, 60000); } else SpawnHatchlings_Timer -= diff; } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp index f8cafea0ef2..d6d23cf7426 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp @@ -61,11 +61,11 @@ public: void Reset() { - Frenzy_Timer = 25000 + rand()%10000; - Wyvern_Timer = 18000 + rand()%10000; + Frenzy_Timer = urand(25000, 35000); + Wyvern_Timer = urand(18000, 28000); Spit_Timer = 8000; PoisonBolt_Timer = 4000; - NoxiousPoison_Timer = 10000 + rand()%10000; + NoxiousPoison_Timer = urand(10000, 20000); FrenzyBack_Timer = 15000; Frenzy = false; @@ -89,7 +89,7 @@ public: DoScriptText(EMOTE_GENERIC_FRENZY_KILL, me); Frenzy = true; PoisonBolt_Timer = 3000; - Frenzy_Timer = 25000 + rand()%10000; + Frenzy_Timer = urand(25000, 35000); } else Frenzy_Timer -= diff; // Wyvern Timer @@ -97,21 +97,21 @@ public: { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_WYVERNSTING); - Wyvern_Timer = 15000 + rand()%17000; + Wyvern_Timer = urand(15000, 32000); } else Wyvern_Timer -= diff; //Spit Timer if (Spit_Timer <= diff) { DoCast(me->getVictim(), SPELL_ACIDSPIT); - Spit_Timer = 5000 + rand()%5000; + Spit_Timer = urand(5000, 10000); } else Spit_Timer -= diff; //NoxiousPoison_Timer if (NoxiousPoison_Timer <= diff) { DoCast(me->getVictim(), SPELL_NOXIOUSPOISON); - NoxiousPoison_Timer = 12000 + rand()%12000; + NoxiousPoison_Timer = urand(12000, 24000); } else NoxiousPoison_Timer -= diff; //PoisonBolt only if frenzy or berserk diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp index 01d26ed7726..4595e4e5095 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp @@ -59,12 +59,12 @@ public: void Reset() { - Sweep_Timer = 5000 + rand()%5000; - SandBlast_Timer = 20000 + rand()%15000; - Submerge_Timer = 90000 + rand()%60000; - Back_Timer = 30000 + rand()%15000; - ChangeTarget_Timer = 5000 + rand()%3000; - Spawn_Timer = 10000 + rand()%10000; + Sweep_Timer = urand(5000, 10000); + SandBlast_Timer = urand(20000, 35000); + Submerge_Timer = urand(90000, 150000); + Back_Timer = urand(30000, 45000); + ChangeTarget_Timer = urand(5000, 8000); + Spawn_Timer = urand(10000, 20000); Enrage = false; Submerged = false; @@ -85,14 +85,14 @@ public: if (!Submerged && Sweep_Timer <= diff) { DoCast(me->getVictim(), SPELL_SWEEP); - Sweep_Timer = 15000 + rand()%15000; + Sweep_Timer = urand(15000, 30000); } else Sweep_Timer -= diff; //SandBlast_Timer if (!Submerged && SandBlast_Timer <= diff) { DoCast(me->getVictim(), SPELL_SANDBLAST); - SandBlast_Timer = 20000 + rand()%15000; + SandBlast_Timer = urand(20000, 35000); } else SandBlast_Timer -= diff; //Submerge_Timer @@ -105,7 +105,7 @@ public: DoCast(me, SPELL_DIRTMOUND_PASSIVE); Submerged = true; - Back_Timer = 30000 + rand()%15000; + Back_Timer = urand(30000, 45000); } else Submerge_Timer -= diff; //ChangeTarget_Timer @@ -117,7 +117,7 @@ public: if (target) DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); - ChangeTarget_Timer = 10000 + rand()%10000; + ChangeTarget_Timer = urand(10000, 20000); } else ChangeTarget_Timer -= diff; //Back_Timer @@ -129,7 +129,7 @@ public: DoCast(me->getVictim(), SPELL_GROUND_RUPTURE); Submerged = false; - Submerge_Timer = 60000 + rand()%60000; + Submerge_Timer = urand(60000, 120000); } else Back_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index fb16d2b7319..27aa72d3e55 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -66,9 +66,9 @@ public: void Reset() { WhirlWind_Timer = 30000; - WhirlWindRandom_Timer = 3000 + rand()%4000; + WhirlWindRandom_Timer = urand(3000, 7000); WhirlWindEnd_Timer = 15000; - AggroReset_Timer = 45000 + rand()%10000; + AggroReset_Timer = urand(45000, 55000); AggroResetEnd_Timer = 5000; EnrageHard_Timer = 10*60000; @@ -111,13 +111,13 @@ public: me->TauntApply(target); AttackStart(target); } - WhirlWindRandom_Timer = 3000 + rand()%4000; + WhirlWindRandom_Timer = urand(3000, 7000); } else WhirlWindRandom_Timer -= diff; if (WhirlWindEnd_Timer <= diff) { WhirlWind = false; - WhirlWind_Timer = 25000 + rand()%15000; + WhirlWind_Timer = urand(25000, 40000); } else WhirlWindEnd_Timer -= diff; } @@ -140,7 +140,7 @@ public: AttackStart(target); } AggroReset = true; - AggroReset_Timer = 2000 + rand()%3000; + AggroReset_Timer = urand(2000, 5000); } else AggroReset_Timer -= diff; if (AggroReset) @@ -149,7 +149,7 @@ public: { AggroReset = false; AggroResetEnd_Timer = 5000; - AggroReset_Timer = 35000 + rand()%10000; + AggroReset_Timer = urand(35000, 45000); } else AggroResetEnd_Timer -= diff; } @@ -207,9 +207,9 @@ public: void Reset() { WhirlWind_Timer = 30000; - WhirlWindRandom_Timer = 3000 + rand()%4000; + WhirlWindRandom_Timer = urand(3000, 7000); WhirlWindEnd_Timer = 15000; - AggroReset_Timer = 45000 + rand()%10000; + AggroReset_Timer = urand(45000, 55000); AggroResetEnd_Timer = 5000; KnockBack_Timer = 10000; @@ -231,7 +231,7 @@ public: { DoCast(me, SPELL_WHIRLWINDADD); WhirlWind = true; - WhirlWind_Timer = 25000 + rand()%15000; + WhirlWind_Timer = urand(25000, 40000); WhirlWindEnd_Timer = 15000; } else WhirlWind_Timer -= diff; @@ -247,7 +247,7 @@ public: AttackStart(target); } - WhirlWindRandom_Timer = 3000 + rand()%4000; + WhirlWindRandom_Timer = urand(3000, 7000); } else WhirlWindRandom_Timer -= diff; if (WhirlWindEnd_Timer <= diff) @@ -269,13 +269,13 @@ public: } AggroReset = true; - AggroReset_Timer = 2000 + rand()%3000; + AggroReset_Timer = urand(2000, 5000); } else AggroReset_Timer -= diff; if (KnockBack_Timer <= diff) { DoCast(me, SPELL_WHIRLWINDADD); - KnockBack_Timer = 10000 + rand()%10000; + KnockBack_Timer = urand(10000, 20000); } else KnockBack_Timer -= diff; } @@ -285,7 +285,7 @@ public: { AggroReset = false; AggroResetEnd_Timer = 5000; - AggroReset_Timer = 30000 + rand()%10000; + AggroReset_Timer = urand(30000, 40000); } else AggroResetEnd_Timer -= diff; } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp index 0ba6bdb1154..c9a9865e36e 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp @@ -82,10 +82,10 @@ public: void Reset() { - ArcaneExplosion_Timer = 6000 + rand()%6000; + ArcaneExplosion_Timer = urand(6000, 12000); EarthShock_Timer = 2000; FullFillment_Timer = 15000; - Blink_Timer = 8000 + rand()%12000; + Blink_Timer = urand(8000, 20000); Invisible_Timer = 500; Images75 = false; @@ -128,7 +128,7 @@ public: if (ArcaneExplosion_Timer <= diff) { DoCast(me->getVictim(), SPELL_ARCANE_EXPLOSION); - ArcaneExplosion_Timer = 8000 + rand()%10000; + ArcaneExplosion_Timer = urand(8000, 18000); } else ArcaneExplosion_Timer -= diff; //If we are within range melee the target @@ -171,7 +171,7 @@ public: } DoStopAttack(); - Blink_Timer= 20000 + rand()%20000; + Blink_Timer= urand(20000, 40000); } else Blink_Timer -= diff; int procent = (int) (me->GetHealthPct() + 0.5f); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index 29b92957ace..b005f9d0953 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -88,7 +88,7 @@ struct boss_twinemperorsAI : public ScriptedAI AfterTeleport = false; tspellcasted = false; AfterTeleportTimer = 0; - Abuse_Bug_Timer = 10000 + rand()%7000; + Abuse_Bug_Timer = urand(10000, 17000); BugsTimer = 2000; me->ClearUnitState(UNIT_STAT_STUNNED); DontYellWhenDead = false; @@ -347,7 +347,7 @@ struct boss_twinemperorsAI : public ScriptedAI if (c) { CastSpellOnBug(c); - Abuse_Bug_Timer = 10000 + rand()%7000; + Abuse_Bug_Timer = urand(10000, 17000); } else { @@ -407,9 +407,9 @@ public: void Reset() { TwinReset(); - UpperCut_Timer = 14000 + rand()%15000; - UnbalancingStrike_Timer = 8000 + rand()%10000; - Scarabs_Timer = 7000 + rand()%7000; + UpperCut_Timer = urand(14000, 29000); + UnbalancingStrike_Timer = urand(8000, 18000); + Scarabs_Timer = urand(7000, 14000); //Added. Can be removed if its included in DB. me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true); @@ -495,9 +495,9 @@ public: { TwinReset(); ShadowBolt_Timer = 0; - Blizzard_Timer = 15000 + rand()%5000; + Blizzard_Timer = urand(15000, 20000); ArcaneBurst_Timer = 1000; - Scorpions_Timer = 7000 + rand()%7000; + Scorpions_Timer = urand(7000, 14000); //Added. Can be removed if its included in DB. me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true); diff --git a/src/server/scripts/Kalimdor/azuremyst_isle.cpp b/src/server/scripts/Kalimdor/azuremyst_isle.cpp index 57ff1448a7e..1898186f615 100644 --- a/src/server/scripts/Kalimdor/azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/azuremyst_isle.cpp @@ -243,7 +243,7 @@ public: void Reset() { Dynamite_Timer = 8000; - Emote_Timer = 120000 + rand()%30000; + Emote_Timer = urand(120000, 150000); me->setFaction(NormFaction); me->SetUInt32Value(UNIT_NPC_FLAGS, NpcFlags); @@ -264,7 +264,7 @@ public: { DoScriptText(SAY_TEXT, me); DoScriptText(SAY_EMOTE, me); - Emote_Timer = 120000 + rand()%30000; + Emote_Timer = urand(120000, 150000); } else Emote_Timer -= diff; } else if (IsTreeEvent) diff --git a/src/server/scripts/Kalimdor/boss_azuregos.cpp b/src/server/scripts/Kalimdor/boss_azuregos.cpp index 6bbc29dcc56..19b5e36e113 100644 --- a/src/server/scripts/Kalimdor/boss_azuregos.cpp +++ b/src/server/scripts/Kalimdor/boss_azuregos.cpp @@ -62,11 +62,11 @@ public: void Reset() { MarkOfFrost_Timer = 35000; - ManaStorm_Timer = 5000 + rand()%12000; - Chill_Timer = 10000 + rand()%20000; - Breath_Timer = 2000 + rand()%6000; + ManaStorm_Timer = urand(5000, 17000); + Chill_Timer = urand(10000, 30000); + Breath_Timer = urand(2000, 8000); Teleport_Timer = 30000; - Reflect_Timer = 15000 + rand()%15000; + Reflect_Timer = urand(15000, 30000); Cleave_Timer = 7000; Enrage_Timer = 0; Enraged = false; @@ -109,14 +109,14 @@ public: if (Chill_Timer <= diff) { DoCast(me->getVictim(), SPELL_CHILL); - Chill_Timer = 13000 + rand()%12000; + Chill_Timer = urand(13000, 25000); } else Chill_Timer -= diff; //Breath_Timer if (Breath_Timer <= diff) { DoCast(me->getVictim(), SPELL_FROSTBREATH); - Breath_Timer = 10000 + rand()%5000; + Breath_Timer = urand(10000, 15000); } else Breath_Timer -= diff; //ManaStorm_Timer @@ -124,14 +124,14 @@ public: { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_MANASTORM); - ManaStorm_Timer = 7500 + rand()%5000; + ManaStorm_Timer = urand(7500, 12500); } else ManaStorm_Timer -= diff; //Reflect_Timer if (Reflect_Timer <= diff) { DoCast(me, SPELL_REFLECT); - Reflect_Timer = 20000 + rand()%15000; + Reflect_Timer = urand(20000, 35000); } else Reflect_Timer -= diff; //Cleave_Timer diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp index c2107e88b2e..9096282c3f6 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp @@ -111,7 +111,7 @@ public: { _EnterCombat(); DoScriptText(SAY_AGGRO, me); - events.ScheduleEvent(EVENT_IMPALE, 10000 + rand()%10000); + events.ScheduleEvent(EVENT_IMPALE, urand(10000, 20000)); events.ScheduleEvent(EVENT_LOCUST, 90000); events.ScheduleEvent(EVENT_BERSERK, 600000); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp index 04627981ef3..b7d74c02dd8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp @@ -107,7 +107,7 @@ public: events.ScheduleEvent(EVENT_CURSE, 10000+rand()%15000); events.ScheduleEvent(EVENT_WARRIOR, 30000); if (GetDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL) - events.ScheduleEvent(EVENT_BLINK, 20000 + rand()%20000); + events.ScheduleEvent(EVENT_BLINK, urand(20000, 40000)); } } @@ -153,7 +153,7 @@ public: { case EVENT_CURSE: DoCastAOE(SPELL_CURSE_PLAGUEBRINGER); - events.ScheduleEvent(EVENT_CURSE, 50000 + rand()%10000); + events.ScheduleEvent(EVENT_CURSE, urand(50000, 60000)); return; case EVENT_WARRIOR: DoScriptText(SAY_SUMMON, me); @@ -173,7 +173,7 @@ public: me->RemoveAllAuras(); me->NearTeleportTo(TELE_X, TELE_Y, TELE_Z, TELE_O); events.Reset(); - events.ScheduleEvent(EVENT_WAVE, 2000 + rand()%3000); + events.ScheduleEvent(EVENT_WAVE, urand(2000, 5000)); waveCount = 0; return; case EVENT_WAVE: @@ -188,7 +188,7 @@ public: SummonUndead(MOB_GUARDIAN, RAID_MODE(5, 10));break; } ++waveCount; - events.ScheduleEvent(waveCount < 2 ? EVENT_WAVE : EVENT_GROUND, 30000 + rand()%15000); + events.ScheduleEvent(waveCount < 2 ? EVENT_WAVE : EVENT_GROUND, urand(30000, 45000)); return; case EVENT_GROUND: { diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp index 8c97766f787..5e2b6551f84 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp @@ -131,7 +131,7 @@ public: m_uiChargingStatus = 0; m_uiCharge_Timer = 1000; - m_uiChangeStance_Timer = 20000 + rand()%5000; + m_uiChangeStance_Timer = urand(20000, 25000); m_uiReflection_Timer = 8000; m_uiKnockAway_Timer = 20000; @@ -252,7 +252,7 @@ public: break; } - m_uiChangeStance_Timer = 20000 + rand()%5000; + m_uiChangeStance_Timer = urand(20000, 25000); return; } else @@ -265,7 +265,7 @@ public: if (m_uiReflection_Timer <= uiDiff) { DoCast(me, SPELL_SPELL_REFLECTION); - m_uiReflection_Timer = 8000 + rand()%1000; + m_uiReflection_Timer = urand(8000, 9000); } else m_uiReflection_Timer -= uiDiff; @@ -273,7 +273,7 @@ public: if (m_uiKnockAway_Timer <= uiDiff) { DoCast(me, SPELL_KNOCK_AWAY); - m_uiKnockAway_Timer = 20000 + rand()%1000; + m_uiKnockAway_Timer = urand(20000, 21000); } else m_uiKnockAway_Timer -= uiDiff; @@ -281,7 +281,7 @@ public: if (m_uiPummel_Timer <= uiDiff) { DoCast(me->getVictim(), SPELL_PUMMEL); - m_uiPummel_Timer = 10000 + rand()%1000; + m_uiPummel_Timer = urand(10000, 11000); } else m_uiPummel_Timer -= uiDiff; @@ -289,7 +289,7 @@ public: if (m_uiIronform_Timer <= uiDiff) { DoCast(me, SPELL_IRONFORM); - m_uiIronform_Timer = 25000 + rand()%1000; + m_uiIronform_Timer = urand(25000, 26000); } else m_uiIronform_Timer -= uiDiff; @@ -302,7 +302,7 @@ public: { //not much point is this, better random target and more often? DoCast(me->getVictim(), SPELL_INTERCEPT); - m_uiIntercept_Timer = 45000 + rand()%1000; + m_uiIntercept_Timer = urand(45000, 46000); } else m_uiIntercept_Timer -= uiDiff; @@ -310,7 +310,7 @@ public: if (m_uiWhirlwind_Timer <= uiDiff) { DoCast(me, SPELL_WHIRLWIND); - m_uiWhirlwind_Timer = 10000 + rand()%1000; + m_uiWhirlwind_Timer = urand(10000, 11000); } else m_uiWhirlwind_Timer -= uiDiff; @@ -318,7 +318,7 @@ public: if (m_uiCleave_Timer <= uiDiff) { DoCast(me->getVictim(), SPELL_CLEAVE); - m_uiCleave_Timer = 8000 + rand()%1000; + m_uiCleave_Timer = urand(8000, 9000); } else m_uiCleave_Timer -= uiDiff; @@ -330,7 +330,7 @@ public: if (m_uiMortalStrike_Timer <= uiDiff) { DoCast(me->getVictim(), SPELL_MORTAL_STRIKE); - m_uiMortalStrike_Timer = 20000 + rand()%1000; + m_uiMortalStrike_Timer = urand(20000, 21000); } else m_uiMortalStrike_Timer -= uiDiff; @@ -338,7 +338,7 @@ public: if (m_uiSlam_Timer <= uiDiff) { DoCast(me->getVictim(), SPELL_SLAM); - m_uiSlam_Timer = 15000 + rand()%1000; + m_uiSlam_Timer = urand(15000, 16000); } else m_uiSlam_Timer -= uiDiff; @@ -381,8 +381,8 @@ public: void Reset() { - m_uiArcWeld_Timer = 20000 + rand()%1000; - m_uiRenewSteel_Timer = 10000 + rand()%1000; + m_uiArcWeld_Timer = urand(20000, 21000); + m_uiRenewSteel_Timer = urand(10000, 11000); } void EnterCombat(Unit* who) @@ -406,7 +406,7 @@ public: if (m_uiArcWeld_Timer <= uiDiff) { DoCast(me->getVictim(), SPELL_ARC_WELD); - m_uiArcWeld_Timer = 20000 + rand()%1000; + m_uiArcWeld_Timer = urand(20000, 21000); } else m_uiArcWeld_Timer -= uiDiff; @@ -421,7 +421,7 @@ public: DoCast(pBjarngrim, SPELL_RENEW_STEEL_N); } } - m_uiRenewSteel_Timer = 10000 + rand()%4000; + m_uiRenewSteel_Timer = urand(10000, 14000); } else m_uiRenewSteel_Timer -= uiDiff; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp index a5ea1868686..d90704dd352 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp @@ -183,7 +183,7 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_ARC_LIGHTNING); - m_uiArcLightning_Timer = 15000 + rand()%1000; + m_uiArcLightning_Timer = urand(15000, 16000); } else m_uiArcLightning_Timer -= uiDiff; @@ -196,7 +196,7 @@ public: m_bIsAura = false; m_uiResumePulsingShockwave_Timer = DUNGEON_MODE(5000, 4000); // Pause Pulsing Shockwave aura - m_uiLightningNova_Timer = 20000 + rand()%1000; + m_uiLightningNova_Timer = urand(20000, 21000); } else m_uiLightningNova_Timer -= uiDiff; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp index 375862c141c..65b5d3eaad1 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp @@ -80,10 +80,10 @@ public: { bIsSlam = false; - uiBoulderTossTimer = 3000 + rand()%6000; - uiGroundSpikeTimer = 9000 + rand()%5000; - uiGroundSlamTimer = 15000 + rand()%3000; - uiStompTimer = 20000 + rand()%9000; + uiBoulderTossTimer = urand(3000, 9000); + uiGroundSpikeTimer = urand(9000, 14000); + uiGroundSlamTimer = urand(15000, 18000); + uiStompTimer = urand(20000, 29000); uiShatterTimer = 0; if (instance) @@ -107,20 +107,20 @@ public: { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) DoCast(target, SPELL_BOULDER_TOSS); - uiBoulderTossTimer = 9000 + rand()%6000; + uiBoulderTossTimer = urand(9000, 15000); } else uiBoulderTossTimer -= diff; if (uiGroundSpikeTimer <= diff) { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) DoCast(target, SPELL_GROUND_SPIKE); - uiGroundSpikeTimer = 12000 + rand()%5000; + uiGroundSpikeTimer = urand(12000, 17000); } else uiGroundSpikeTimer -= diff; if (uiStompTimer <= diff) { DoCast(me, SPELL_STOMP); - uiStompTimer = 20000 + rand()%9000; + uiStompTimer = urand(20000, 29000); } else uiStompTimer -= diff; if (uiGroundSlamTimer <= diff) @@ -128,7 +128,7 @@ public: DoCast(me, SPELL_GROUND_SLAM); bIsSlam = true; uiShatterTimer = 10000; - uiGroundSlamTimer = 15000 + rand()%3000; + uiGroundSlamTimer = urand(15000, 18000); } else uiGroundSlamTimer -= diff; if (bIsSlam) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp index 4ab09dbf67a..4f512089119 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp @@ -79,10 +79,10 @@ public: void Reset() { - PartingSorrowTimer = 25000 + rand()%5000; + PartingSorrowTimer = urand(25000, 30000); StormOfGriefTimer = 10000; ShockOfSorrowTimer = 20000+rand()%5000; - PillarOfWoeTimer = 5000 + rand()%10000; + PillarOfWoeTimer = urand(5000, 15000); if (instance) { @@ -124,14 +124,14 @@ public: if (target) DoCast(target, SPELL_PARTING_SORROW); - PartingSorrowTimer = 30000 + rand()%10000; + PartingSorrowTimer = urand(30000, 40000); } else PartingSorrowTimer -= diff; } if (StormOfGriefTimer <= diff) { DoCast(me->getVictim(), SPELL_STORM_OF_GRIEF_N, true); - StormOfGriefTimer = 15000 + rand()%5000; + StormOfGriefTimer = urand(15000, 20000); } else StormOfGriefTimer -= diff; if (ShockOfSorrowTimer <= diff) @@ -139,7 +139,7 @@ public: DoResetThreat(); DoScriptText(SAY_STUN, me); DoCast(me, SPELL_SHOCK_OF_SORROW_N); - ShockOfSorrowTimer = 20000 + rand()%10000; + ShockOfSorrowTimer = urand(20000, 30000); } else ShockOfSorrowTimer -= diff; if (PillarOfWoeTimer <= diff) @@ -151,7 +151,7 @@ public: else DoCast(me->getVictim(), SPELL_PILLAR_OF_WOE_N); - PillarOfWoeTimer = 5000 + rand()%20000; + PillarOfWoeTimer = urand(5000, 25000); } else PillarOfWoeTimer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp index 41dcd77d4bc..dd61fe549c3 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp @@ -115,10 +115,10 @@ public: bIsFrenzy = false; uiEncounterTimer = 0; - uiChainLightningTimer = 3000 + rand()%5000; - uiLightningShieldTimer = 20000 + rand()%5000; - uiStaticChargeTimer = 20000 + rand()%5000; - uiLightningRingTimer = 30000 + rand()%5000; + uiChainLightningTimer = urand(3000, 8000); + uiLightningShieldTimer = urand(20000, 25000); + uiStaticChargeTimer = urand(20000, 25000); + uiLightningRingTimer = urand(30000, 35000); uiSummonTimer = 5000; uiFrenzyTimer = 300000; //5 minutes abuseTheOoze = 0; @@ -158,7 +158,7 @@ public: { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) DoCast(target, SPELL_CHAIN_LIGHTING); - uiChainLightningTimer = 10000 + rand()%5000; + uiChainLightningTimer = urand(10000, 15000); } else uiChainLightningTimer -= diff; if (uiLightningShieldTimer <= diff) @@ -170,7 +170,7 @@ public: if (uiStaticChargeTimer <= diff) { DoCast(me->getVictim(), SPELL_STATIC_CHARGE); - uiStaticChargeTimer = 20000 + rand()%5000; + uiStaticChargeTimer = urand(20000, 25000); } uiStaticChargeTimer -= diff; if (uiLightningRingTimer <= diff) @@ -178,7 +178,7 @@ public: if (me->IsNonMeleeSpellCasted(false)) me->InterruptNonMeleeSpells(false); DoCast(me, SPELL_LIGHTING_RING); - uiLightningRingTimer = 30000 + rand()%5000; + uiLightningRingTimer = urand(30000, 35000); } else uiLightningRingTimer -= diff; if (uiSummonTimer <= diff) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp index ec1464a5d6f..273a0bf6f8e 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp @@ -239,7 +239,7 @@ public: summon->CastSpell(target, DUNGEON_MODE(SPELL_DARK_MATTER, H_SPELL_DARK_MATTER), true); } } - uiMarnakEncounterTimer = 30000 + rand()%1000; + uiMarnakEncounterTimer = urand(30000, 31000); } else uiMarnakEncounterTimer -= diff; } if (bAbedneumActivated) @@ -255,7 +255,7 @@ public: summon->CastSpell(target, DUNGEON_MODE(SPELL_SEARING_GAZE, H_SPELL_SEARING_GAZE), true); } } - uiAbedneumEncounterTimer = 30000 + rand()%1000; + uiAbedneumEncounterTimer = urand(30000, 31000); } else uiAbedneumEncounterTimer -= diff; } } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp index 3888cc43bc9..1892702d336 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp @@ -143,7 +143,7 @@ public: uiPhase_timer = 0; Ascend_Timer = 480000; //8 minutes - QuantumStrike_Timer = 4000 + rand()%10000; + QuantumStrike_Timer = urand(4000, 14000); Berserk_Timer = 360000; //6 minutes CollapsingStar_Timer = urand(15000, 20000); //Spawns between 15 to 20 seconds BigBang_Timer = 90000; diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp index a9f84016a04..71de7177e2b 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp @@ -340,7 +340,7 @@ public: if (Mortal_Strike_timer <= diff) { DoCast(me->getVictim(), SPELL_AV_MORTAL_STRIKE); - Mortal_Strike_timer = 10000 + rand()%20 * 1000; + Mortal_Strike_timer = urand(10, 30) * 1000; } else Mortal_Strike_timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp index 829f681982f..8a7eefbf633 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp @@ -162,20 +162,20 @@ public: me->InterruptNonMeleeSpells(true); DoCast(me, SPELL_FROSTNOVA); - FrostNova_Timer = 17500 + rand()%7500; + FrostNova_Timer = urand(17500, 25000); CanBlink = true; } else FrostNova_Timer -= diff; if (Frostbolt_Timer <= diff) { DoCast(me->getVictim(), SPELL_FROSTBOLT); - Frostbolt_Timer = 4500 + rand()%1500; + Frostbolt_Timer = urand(4500, 6000); } else Frostbolt_Timer -= diff; if (FireBall_Timer <= diff) { DoCast(me->getVictim(), SPELL_FIREBALL); - FireBall_Timer = 4500 + rand()%1500; + FireBall_Timer = urand(4500, 6000); } else FireBall_Timer -= diff; if (CanBlink) @@ -191,7 +191,7 @@ public: me->GetMotionMaster()->MovementExpired(); DoCast(me, SPELL_BLINK); - Blink_Timer = 1000 + rand()%1500; + Blink_Timer = urand(1000, 2500); CanBlink = false; } else Blink_Timer -= diff; } @@ -290,7 +290,7 @@ public: if (ArcaneBolt_Timer <= diff) { DoCast(me->getVictim(), SPELL_ARCANE_BOLT); - ArcaneBolt_Timer = 2000 + rand()%2500; + ArcaneBolt_Timer = urand(2000, 4500); } else ArcaneBolt_Timer -= diff; if (Apprentice_Timer <= diff) diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp index 43171eda1af..e744cd0f8fb 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp @@ -157,7 +157,7 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_FLAME_SHOCK); - flameshock_timer = 10000 + rand()%5000; + flameshock_timer = urand(10000, 15000); } else flameshock_timer -= diff; if (arcaneshock_timer <= diff) @@ -165,7 +165,7 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_ARCANE_SHOCK); - arcaneshock_timer = 10000 + rand()%5000; + arcaneshock_timer = urand(10000, 15000); } else arcaneshock_timer -= diff; if (frostshock_timer <= diff) @@ -173,7 +173,7 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_FROST_SHOCK); - frostshock_timer = 10000 + rand()%5000; + frostshock_timer = urand(10000, 15000); } else frostshock_timer -= diff; if (shadowshock_timer <= diff) @@ -181,7 +181,7 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_SHADOW_SHOCK); - shadowshock_timer = 10000 + rand()%5000; + shadowshock_timer = urand(10000, 15000); } else shadowshock_timer -= diff; if (chainlightning_timer <= diff) diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp index 8f1453e51ee..7ffc203f694 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp @@ -74,8 +74,8 @@ public: void Reset() { EventCheck_Timer = 5000; - CorrosiveAcid_Timer = 5000 + rand()%5000; - Fear_Timer = 25000 + rand()%5000; + CorrosiveAcid_Timer = urand(5000, 10000); + Fear_Timer = urand(25000, 30000); Enrage_Timer = 180000; Intro = false; IsBanished = true; @@ -182,13 +182,13 @@ public: if (CorrosiveAcid_Timer <= diff) { DoCast(me->getVictim(), SPELL_CORROSIVE_ACID); - CorrosiveAcid_Timer = 15000 + rand()%10000; + CorrosiveAcid_Timer = urand(15000, 25000); } else CorrosiveAcid_Timer -= diff; if (Fear_Timer <= diff) { DoCast(me, SPELL_FEAR); - Fear_Timer = 20000 + rand()%15000; + Fear_Timer = urand(20000, 35000); } else Fear_Timer -= diff; if (IsHeroic()) diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp index 1987c1bb01a..dd5df358d53 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp @@ -152,14 +152,14 @@ public: { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_CHARGE); - Charge_Timer = 15000 + rand()%10000; + Charge_Timer = urand(15000, 25000); } else Charge_Timer -= diff; //Knockback_Timer if (Knockback_Timer <= diff) { DoCast(me, SPELL_WAR_STOMP); - Knockback_Timer = 18000 + rand()%6000; + Knockback_Timer = urand(18000, 24000); } else Knockback_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp index 6d3a5f181d4..8cf8d61b845 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp @@ -165,7 +165,7 @@ public: void Reset() { - ShadowBoltVolley_Timer = 7000 + rand()%7000; + ShadowBoltVolley_Timer = urand(7000, 14000); DrawShadows_Timer = 45000; summonTraveler_Timer = 90000; banish_Timer = 17000; @@ -269,7 +269,7 @@ public: if (ShadowBoltVolley_Timer <= diff) { DoCast(me, SPELL_SHADOWBOLT_VOLLEY); - ShadowBoltVolley_Timer = 15000 + rand()%15000; + ShadowBoltVolley_Timer = urand(15000, 30000); } else ShadowBoltVolley_Timer -= diff; if (IsHeroic() && banish_Timer <= diff) diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp index bd6539335c8..ebb279f74ac 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp @@ -64,9 +64,9 @@ public: void Reset() { SonicBoom_Timer = 30000; - MurmursTouch_Timer = 8000 + rand()%12000; + MurmursTouch_Timer = urand(8000, 20000); Resonance_Timer = 5000; - MagneticPull_Timer = 15000 + rand()%15000; + MagneticPull_Timer = urand(15000, 30000); ThunderingStorm_Timer = 15000; SonicShock_Timer = 10000; SonicBoom = false; @@ -133,7 +133,7 @@ public: { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 80, true)) DoCast(target, SPELL_MURMURS_TOUCH); - MurmursTouch_Timer = 25000 + rand()%10000; + MurmursTouch_Timer = urand(25000, 35000); } else MurmursTouch_Timer -= diff; // Resonance diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index ec7f9a8e070..c28fe68d9e0 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -646,7 +646,7 @@ public: case PHASE_NORMAL_MAIEV: AttackStart(me->getVictim()); Timer[EVENT_TAUNT] = 32000; - Timer[EVENT_SHEAR] = 10000 + rand()%15 * 1000; + Timer[EVENT_SHEAR] = urand(10, 25) * 1000; Timer[EVENT_FLAME_CRASH] = 20000; Timer[EVENT_PARASITIC_SHADOWFIEND] = 25000; Timer[EVENT_PARASITE_CHECK] = 0; @@ -657,14 +657,14 @@ public: Timer[EVENT_TRANSFORM_NORMAL] = 60000; if (NextPhase == PHASE_NORMAL_2) break; - Timer[EVENT_ENRAGE] = 30000 + rand()%10 * 1000; + Timer[EVENT_ENRAGE] = urand(30, 40) * 1000; break; case PHASE_FLIGHT: Timer[EVENT_FIREBALL] = 1000; if (!(rand()%4)) Timer[EVENT_DARK_BARRAGE] = 10000; - Timer[EVENT_EYE_BLAST] = 10000 + rand()%15 * 1000; - Timer[EVENT_MOVE_POINT] = 20000 + rand()%20 * 1000; + Timer[EVENT_EYE_BLAST] = urand(10, 25) * 1000; + Timer[EVENT_MOVE_POINT] = urand(20, 40) * 1000; break; case PHASE_DEMON: Timer[EVENT_SHADOW_BLAST] = 1000; @@ -1022,7 +1022,7 @@ public: if (soundid) DoPlaySoundToSet(me, soundid); } - Timer[EVENT_TAUNT] = 25000 + rand()%10000; + Timer[EVENT_TAUNT] = urand(25000, 35000); break; case EVENT_SHEAR: @@ -1033,14 +1033,14 @@ public: case EVENT_FLAME_CRASH: DoCast(me->getVictim(), SPELL_FLAME_CRASH); - Timer[EVENT_FLAME_CRASH] = 30000 + rand()%10000; + Timer[EVENT_FLAME_CRASH] = urand(30000, 40000); break; case EVENT_PARASITIC_SHADOWFIEND: { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 200, true)) DoCast(target, SPELL_PARASITIC_SHADOWFIEND, true); - Timer[EVENT_PARASITIC_SHADOWFIEND] = 35000 + rand()%10000; + Timer[EVENT_PARASITIC_SHADOWFIEND] = urand(35000, 45000); } break; @@ -1050,7 +1050,7 @@ public: case EVENT_DRAW_SOUL: DoCast(me->getVictim(), SPELL_DRAW_SOUL); - Timer[EVENT_DRAW_SOUL] = 50000 + rand()%10000; + Timer[EVENT_DRAW_SOUL] = urand(50000, 60000); break; // PHASE_NORMAL_2 @@ -1172,7 +1172,7 @@ public: Phase = PHASE_NORMAL_MAIEV; IllidanGUID = 0; Timer[EVENT_MAIEV_STEALTH] = 0; - Timer[EVENT_MAIEV_TAUNT] = 22000 + rand()%21 * 1000; + Timer[EVENT_MAIEV_TAUNT] = urand(22, 43) * 1000; Timer[EVENT_MAIEV_SHADOW_STRIKE] = 30000; SetEquipmentSlots(false, 44850, EQUIP_UNEQUIP, EQUIP_NO_CHANGE); me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, 45738); @@ -1321,7 +1321,7 @@ public: if (MaievTaunts[random].text.size()) me->MonsterYell(MaievTaunts[random].text.c_str(), LANG_UNIVERSAL, 0); DoPlaySoundToSet(me, sound); - Timer[EVENT_MAIEV_TAUNT] = 22000 + rand()%21 * 1000; + Timer[EVENT_MAIEV_TAUNT] = urand(22, 43) * 1000; } break; case EVENT_MAIEV_SHADOW_STRIKE: @@ -1590,7 +1590,7 @@ public: break; case PHASE_FIGHT_MINIONS: me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - Timer = 10000 + rand()%6000; // summon minion + Timer = urand(10000, 16000); // summon minion break; case PHASE_RETURN: me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -1780,7 +1780,7 @@ public: AttackStart(Elite); me->AddThreat(Elite, 1000000.0f); } - Timer = 10000 + rand()%6000; + Timer = urand(10000, 16000); GETUNIT(Illidan, IllidanGUID); if (Illidan && Illidan->HealthBelowPct(10)) EnterPhase(PHASE_RETURN); diff --git a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp index a69ed1f7e7d..645a9fe7978 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp @@ -128,7 +128,7 @@ public: FatalAttractionExplodeTimer = 70000; ShriekTimer = 30000; SaberTimer = 35000; - RandomYellTimer = 70000 + rand()%41 * 1000; + RandomYellTimer = urand(70, 111) * 1000; EnrageTimer = 600000; ExplosionCount = 0; @@ -237,7 +237,7 @@ public: DoScriptText(RAND(SAY_SPELL2, SAY_SPELL3), me); FatalAttractionExplodeTimer = 2000; - FatalAttractionTimer = 40000 + rand()%31 * 1000; + FatalAttractionTimer = urand(40, 71) * 1000; } else FatalAttractionTimer -= diff; if (FatalAttractionExplodeTimer <= diff) @@ -293,7 +293,7 @@ public: if (RandomYellTimer <= diff) { DoScriptText(RAND(SAY_TAUNT1, SAY_TAUNT2, SAY_TAUNT3), me); - RandomYellTimer = 60000 + rand()%91 * 1000; + RandomYellTimer = urand(60, 151) * 1000; } else RandomYellTimer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp index 1519713183d..8b39fe8a8f7 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -582,7 +582,7 @@ public: { me->InterruptNonMeleeSpells(false); DoCast(me->getVictim(), SPELL_DEADEN); - DeadenTimer = 25000 + rand()%10000; + DeadenTimer = urand(25000, 35000); if (!(rand()%2)) { DoScriptText(DESI_SAY_SPEC, me); @@ -676,7 +676,7 @@ public: if (SoulScreamTimer <= diff) { DoCast(me->getVictim(), SPELL_SOUL_SCREAM); - SoulScreamTimer = 9000 + rand()%2000; + SoulScreamTimer = urand(9000, 11000); if (!(rand()%3)) { DoScriptText(ANGER_SAY_SPEC, me); diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index 074bb16e7a0..d6510db0cbb 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -246,7 +246,7 @@ public: if (instance) instance->SetData(DATA_TERONGOREFIENDEVENT, NOT_STARTED); - IncinerateTimer = 20000 + rand()%11000; + IncinerateTimer = urand(20000, 31000); SummonDoomBlossomTimer = 12000; EnrageTimer = 600000; CrushingShadowsTimer = 22000; @@ -460,7 +460,7 @@ public: { DoScriptText(RAND(SAY_SPECIAL1, SAY_SPECIAL2), me); DoCast(target, SPELL_INCINERATE); - IncinerateTimer = 20000 + rand()%31 * 1000; + IncinerateTimer = urand(20, 51) * 1000; } } else IncinerateTimer -= diff; @@ -469,7 +469,7 @@ public: Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); if (target && target->isAlive()) DoCast(target, SPELL_CRUSHING_SHADOWS); - CrushingShadowsTimer = 10000 + rand()%16 * 1000; + CrushingShadowsTimer = urand(10, 26) * 1000; } else CrushingShadowsTimer -= diff; /*** NOTE FOR FUTURE DEV: UNCOMMENT BELOW ONLY IF MIND CONTROL IS FULLY IMPLEMENTED **/ @@ -492,7 +492,7 @@ public: if (RandomYellTimer <= diff) { DoScriptText(RAND(SAY_SPELL1, SAY_SPELL2), me); - RandomYellTimer = 50000 + rand()%51 * 1000; + RandomYellTimer = urand(50, 101) * 1000; } else RandomYellTimer -= diff; if (!me->HasAura(SPELL_BERSERK)) diff --git a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp index f7e98444be8..6fe24378f79 100644 --- a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp @@ -613,8 +613,8 @@ public: void Reset() { - BlizzardTimer = 30000 + rand()%61 * 1000; - FlamestrikeTimer = 30000 + rand()%61 * 1000; + BlizzardTimer = urand(30, 91) * 1000; + FlamestrikeTimer = urand(30, 91) * 1000; ArcaneBoltTimer = 10000; DampenMagicTimer = 2000; ArcaneExplosionTimer = 14000; @@ -673,7 +673,7 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { DoCast(target, SPELL_BLIZZARD); - BlizzardTimer = 45000 + rand()%46 * 1000; + BlizzardTimer = urand(45, 91) * 1000; FlamestrikeTimer += 10000; Cooldown = 1000; } @@ -684,7 +684,7 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { DoCast(target, SPELL_FLAMESTRIKE); - FlamestrikeTimer = 55000 + rand()%46 * 1000; + FlamestrikeTimer = urand(55, 101) * 1000; BlizzardTimer += 10000; Cooldown = 2000; } @@ -756,7 +756,7 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { DoCast(target, SPELL_DIVINE_WRATH); - DivineWrathTimer = 40000 + rand()%41 * 1000; + DivineWrathTimer = urand(40, 81) * 1000; } } else DivineWrathTimer -= diff; @@ -799,7 +799,7 @@ public: EnvenomTargetGUID = 0; DeadlyPoisonTimer = 20000; - VanishTimer = 60000 + rand()%61 * 1000; + VanishTimer = urand(60, 121) * 1000; AppearEnvenomTimer = 150000; HasVanished = false; @@ -827,7 +827,7 @@ public: if (DeadlyPoisonTimer <= diff) { DoCast(me->getVictim(), SPELL_DEADLY_POISON); - DeadlyPoisonTimer = 15000 + rand()%31 * 1000; + DeadlyPoisonTimer = urand(15, 46) * 1000; } else DeadlyPoisonTimer -= diff; if (AppearEnvenomTimer <= diff) // Cast Envenom. This is cast 4 seconds after Vanish is over diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp index 65cb0173cd7..a29fafe4edb 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp @@ -691,8 +691,8 @@ public: void Reset() { - Mindblast_Timer = 3000 + rand()%5000; - Earthshock_Timer = 5000 + rand()%5000; + Mindblast_Timer = urand(3000, 8000); + Earthshock_Timer = urand(5000, 10000); if (instance) { @@ -764,7 +764,7 @@ public: if (target)DoCast(target, SPELL_MINDBLAST); - Mindblast_Timer = 10000 + rand()%5000; + Mindblast_Timer = urand(10000, 15000); } else Mindblast_Timer -= diff; if (Earthshock_Timer <= diff) @@ -787,7 +787,7 @@ public: } } } - Earthshock_Timer = 8000 + rand()%7000; + Earthshock_Timer = urand(8000, 15000); } else Earthshock_Timer -= diff; DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp index 7cdfdc383bd..5265dff16e2 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp @@ -213,7 +213,7 @@ public: if (m_uiReverberation_Timer <= uiDiff) { DoCast(me->getVictim(), SPELL_REVERBERATION, true); - m_uiReverberation_Timer = 15000 + rand()%10000; + m_uiReverberation_Timer = urand(15000, 25000); } else m_uiReverberation_Timer -= uiDiff; diff --git a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp index de3b93d029d..b941e3bc581 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp @@ -524,7 +524,7 @@ public: if (target) DoCast(target, SPELL_GREATER_POLYMORPH); - GreaterPolymorph_Timer = 15000 + rand()%5000; + GreaterPolymorph_Timer = urand(15000, 20000); } else GreaterPolymorph_Timer -= diff; //LightningBolt_Timer @@ -581,8 +581,8 @@ public: void Reset() { GreaterPowerWordShield_Timer = 5000; - Heal_Timer = 25000 + rand()%15000; - PrayerofHealing_Timer = 45000 + rand()%10000; + Heal_Timer = urand(25000, 40000); + PrayerofHealing_Timer = urand(45000, 55000); //reset encounter if (instance) @@ -648,14 +648,14 @@ public: if (Heal_Timer <= diff) { DoCast(me, SPELL_HEAL); - Heal_Timer = 15000 + rand()%25000; + Heal_Timer = urand(15000, 40000); } else Heal_Timer -= diff; //PrayerofHealing_Timer if (PrayerofHealing_Timer <= diff) { DoCast(me, SPELL_PRAYER_OH); - PrayerofHealing_Timer = 35000 + rand()%15000; + PrayerofHealing_Timer = urand(35000, 50000); } else PrayerofHealing_Timer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index 6918a076f6e..755106f7092 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -424,7 +424,7 @@ class boss_magtheridon : public CreatureScript summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } } - Blaze_Timer = 20000 + rand()%20000; + Blaze_Timer = urand(20000, 40000); } else Blaze_Timer -= diff; @@ -497,10 +497,10 @@ class mob_hellfire_channeler : public CreatureScript void Reset() { - ShadowBoltVolley_Timer = 8000 + rand()%2000; + ShadowBoltVolley_Timer = urand(8000, 10000); DarkMending_Timer = 10000; - Fear_Timer = 15000 + rand()%5000; - Infernal_Timer = 10000 + rand()%40000; + Fear_Timer = urand(15000, 20000); + Infernal_Timer = urand(10000, 50000); Check_Timer = 5000; } @@ -547,7 +547,7 @@ class mob_hellfire_channeler : public CreatureScript if (ShadowBoltVolley_Timer <= diff) { DoCast(me, SPELL_SHADOW_BOLT_VOLLEY); - ShadowBoltVolley_Timer = 10000 + rand()%10000; + ShadowBoltVolley_Timer = urand(10000, 20000); } else ShadowBoltVolley_Timer -= diff; @@ -565,7 +565,7 @@ class mob_hellfire_channeler : public CreatureScript { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) DoCast(target, SPELL_FEAR); - Fear_Timer = 25000 + rand()%15000; + Fear_Timer = urand(25000, 40000); } else Fear_Timer -= diff; @@ -574,7 +574,7 @@ class mob_hellfire_channeler : public CreatureScript { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_BURNING_ABYSSAL, true); - Infernal_Timer = 30000 + rand()%10000; + Infernal_Timer = urand(30000, 40000); } else Infernal_Timer -= diff; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp index df7f95abe2a..cae13adfef7 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp @@ -102,7 +102,7 @@ class boss_gatewatcher_iron_hand : public CreatureScript if (Shadow_Power_Timer <= diff) { DoCast(me, SPELL_SHADOW_POWER); - Shadow_Power_Timer = 20000 + rand()%8000; + Shadow_Power_Timer = urand(20000, 28000); } else Shadow_Power_Timer -= diff; @@ -128,7 +128,7 @@ class boss_gatewatcher_iron_hand : public CreatureScript if (Stream_of_Machine_Fluid_Timer <= diff) { DoCast(me->getVictim(), SPELL_STREAM_OF_MACHINE_FLUID); - Stream_of_Machine_Fluid_Timer = 35000 + rand()%15000; + Stream_of_Machine_Fluid_Timer = urand(35000, 50000); } else Stream_of_Machine_Fluid_Timer -= diff; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp index 05bf711432d..c5408b4bbf5 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -76,10 +76,10 @@ class boss_nethermancer_sepethrea : public CreatureScript void Reset() { - frost_attack_Timer = 7000 + rand()%3000; - arcane_blast_Timer = 12000 + rand()%6000; - dragons_breath_Timer = 18000 + rand()%4000; - knockback_Timer = 22000 + rand()%6000; + frost_attack_Timer = urand(7000, 10000); + arcane_blast_Timer = urand(12000, 18000); + dragons_breath_Timer = urand(18000, 22000); + knockback_Timer = urand(22000, 28000); solarburn_Timer = 30000; if (instance) @@ -119,7 +119,7 @@ class boss_nethermancer_sepethrea : public CreatureScript { DoCast(me->getVictim(), SPELL_FROST_ATTACK); - frost_attack_Timer = 7000 + rand()%3000; + frost_attack_Timer = urand(7000, 10000); } else frost_attack_Timer -= diff; @@ -141,7 +141,7 @@ class boss_nethermancer_sepethrea : public CreatureScript return; DoScriptText(RAND(SAY_DRAGONS_BREATH_1, SAY_DRAGONS_BREATH_2), me); } - dragons_breath_Timer = 12000 + rand()%10000; + dragons_breath_Timer = urand(12000, 22000); } else dragons_breath_Timer -= diff; @@ -150,7 +150,7 @@ class boss_nethermancer_sepethrea : public CreatureScript if (knockback_Timer <= diff) { DoCast(me->getVictim(), SPELL_KNOCKBACK); - knockback_Timer = 15000 + rand()%10000; + knockback_Timer = urand(15000, 25000); } else knockback_Timer -= diff; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp index 54ecbdd621a..30a6bdbc0dd 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp @@ -83,10 +83,10 @@ class boss_pathaleon_the_calculator : public CreatureScript void Reset() { Summon_Timer = 30000; - ManaTap_Timer = 12000 + rand()%8000; - ArcaneTorrent_Timer = 16000 + rand()%9000; - Domination_Timer = 25000 + rand()%15000; - ArcaneExplosion_Timer = 8000 + rand()%5000; + ManaTap_Timer = urand(12000, 20000); + ArcaneTorrent_Timer = urand(16000, 25000); + Domination_Timer = urand(25000, 40000); + ArcaneExplosion_Timer = urand(8000, 13000); Enraged = false; @@ -135,7 +135,7 @@ class boss_pathaleon_the_calculator : public CreatureScript Wraith->AI()->AttackStart(target); } DoScriptText(SAY_SUMMON, me); - Summon_Timer = 30000 + rand()%15000; + Summon_Timer = urand(30000, 45000); } else Summon_Timer -= diff; @@ -143,7 +143,7 @@ class boss_pathaleon_the_calculator : public CreatureScript if (ManaTap_Timer <= diff) { DoCast(me->getVictim(), SPELL_MANA_TAP); - ManaTap_Timer = 14000 + rand()%8000; + ManaTap_Timer = urand(14000, 22000); } else ManaTap_Timer -= diff; @@ -151,7 +151,7 @@ class boss_pathaleon_the_calculator : public CreatureScript if (ArcaneTorrent_Timer <= diff) { DoCast(me->getVictim(), SPELL_ARCANE_TORRENT); - ArcaneTorrent_Timer = 12000 + rand()%6000; + ArcaneTorrent_Timer = urand(12000, 18000); } else ArcaneTorrent_Timer -= diff; @@ -163,7 +163,7 @@ class boss_pathaleon_the_calculator : public CreatureScript DoScriptText(RAND(SAY_DOMINATION_1, SAY_DOMINATION_2), me); DoCast(target, SPELL_DOMINATION); } - Domination_Timer = 25000 + rand()%5000; + Domination_Timer = urand(25000, 30000); } else Domination_Timer -= diff; @@ -174,7 +174,7 @@ class boss_pathaleon_the_calculator : public CreatureScript if (ArcaneExplosion_Timer <= diff) { DoCast(me->getVictim(), H_SPELL_ARCANE_EXPLOSION); - ArcaneExplosion_Timer = 10000 + rand()%4000; + ArcaneExplosion_Timer = urand(10000, 14000); } else ArcaneExplosion_Timer -= diff; @@ -218,7 +218,7 @@ class mob_nether_wraith : public CreatureScript void Reset() { - ArcaneMissiles_Timer = 1000 + rand()%3000; + ArcaneMissiles_Timer = urand(1000, 4000); Detonation_Timer = 20000; Die_Timer = 2200; Detonation = false; @@ -237,7 +237,7 @@ class mob_nether_wraith : public CreatureScript DoCast(target, SPELL_ARCANE_MISSILES); else DoCast(me->getVictim(), SPELL_ARCANE_MISSILES); - ArcaneMissiles_Timer = 5000 + rand()%5000; + ArcaneMissiles_Timer = urand(5000, 10000); } else ArcaneMissiles_Timer -=diff; diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp index 2bf4abbcb96..75c80b06816 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp @@ -152,9 +152,9 @@ class boss_warp_splinter : public CreatureScript void Reset() { - War_Stomp_Timer = 25000 + rand()%15000; + War_Stomp_Timer = urand(25000, 40000); Summon_Treants_Timer = 45000; - Arcane_Volley_Timer = 8000 + rand()%12000; + Arcane_Volley_Timer = urand(8000, 20000); me->SetSpeed(MOVE_RUN, 0.7f, true); } @@ -199,7 +199,7 @@ class boss_warp_splinter : public CreatureScript if (War_Stomp_Timer <= diff) { DoCast(me->getVictim(), WAR_STOMP); - War_Stomp_Timer = 25000 + rand()%15000; + War_Stomp_Timer = urand(25000, 40000); } else War_Stomp_Timer -= diff; @@ -208,7 +208,7 @@ class boss_warp_splinter : public CreatureScript if (Arcane_Volley_Timer <= diff) { DoCast(me->getVictim(), DUNGEON_MODE(ARCANE_VOLLEY, ARCANE_VOLLEY_H)); - Arcane_Volley_Timer = 20000 + rand()%15000; + Arcane_Volley_Timer = urand(20000, 35000); } else Arcane_Volley_Timer -= diff; -- cgit v1.2.3