From 03fd2f7ad791fe1878f452f9c12ffd12ef0c6b4c Mon Sep 17 00:00:00 2001 From: Desch Date: Sun, 12 Jul 2015 19:57:38 +0200 Subject: [PATCH 1/2] Custom B initial --- CMakeLists.txt | 2 +- README.md | 2 +- cmake/showoptions.cmake | 2 +- dep/acelite/ace/CMakeLists.txt | 2 +- .../ace/PrecompiledHeaders/WinAcePCH.cpp | 2 +- dep/g3dlite/CMakeLists.txt | 2 +- dep/gsoap/CMakeLists.txt | 2 +- dep/zlib/CMakeLists.txt | 2 +- sql/#1xxxx_myth_update_world.sql | 831 ++- .../#3203_Premium_accounts_auth.sql | 1 + .../#3203_Premium_accounts_world.sql | 1 + sql/SQL Custom/NPC - ADDR.sql | 100 + sql/SQL Custom/NPC - transfers.sql | 1 + sql/SQL Custom/NPC teleporteur.sql | 45 + ...3\203\302\251l\303\203\302\251porteur.sql" | 45 + sql/SQL Custom/VIP - World.sql | 52 + sql/SQL Custom/characters_armory.sql | 39 + sql/SQL Custom/npc-transmogrification.sql | 16 + .../transmogrification-characters.sql | 9 + .../trinit_string_transmogification.sql | 32 + sql/UpdateSpellPpmRate.sql | 470 +- src/genrev/CMakeLists.txt | 2 +- .../authserver/Authentication/AuthCodes.cpp | 2 +- .../authserver/Authentication/AuthCodes.h | 4 +- src/server/authserver/CMakeLists.txt | 2 +- src/server/authserver/Main.cpp | 2 +- .../authserver/PrecompiledHeaders/authPCH.cpp | 2 +- .../authserver/PrecompiledHeaders/authPCH.h | 2 +- src/server/authserver/Realms/RealmList.cpp | 2 +- src/server/authserver/Realms/RealmList.h | 2 +- src/server/authserver/Server/AuthSocket.cpp | 2 +- src/server/authserver/Server/AuthSocket.h | 2 +- src/server/authserver/Server/RealmAcceptor.h | 2 +- src/server/authserver/Server/RealmSocket.cpp | 2 +- src/server/authserver/Server/RealmSocket.h | 2 +- src/server/authserver/authserver.rc | 2 +- src/server/authserver/resource.h | 2 +- .../collision/BoundingIntervalHierarchy.h | 2 +- src/server/collision/CMakeLists.txt | 2 +- .../collision/Management/IVMapManager.h | 2 +- .../collision/Management/VMapFactory.cpp | 2 +- src/server/collision/Management/VMapFactory.h | 2 +- .../collision/Management/VMapManager2.cpp | 2 +- .../collision/Management/VMapManager2.h | 2 +- src/server/collision/Maps/MapTree.cpp | 2 +- src/server/collision/Maps/MapTree.h | 2 +- src/server/collision/Maps/TileAssembler.cpp | 2 +- src/server/collision/Maps/TileAssembler.h | 2 +- .../collision/Models/GameObjectModel.cpp | 2 +- src/server/collision/Models/ModelInstance.h | 2 +- src/server/collision/Models/WorldModel.cpp | 2 +- src/server/collision/Models/WorldModel.h | 2 +- .../PrecompiledHeaders/collisionPCH.cpp | 2 +- .../PrecompiledHeaders/collisionPCH.h | 2 +- src/server/collision/VMapDefinitions.h | 2 +- src/server/game/AI/CoreAI/CombatAI.cpp | 2 +- src/server/game/AI/CoreAI/CombatAI.h | 2 +- src/server/game/AI/CoreAI/GameObjectAI.cpp | 2 +- src/server/game/AI/CoreAI/GameObjectAI.h | 2 +- src/server/game/AI/CoreAI/GuardAI.cpp | 2 +- src/server/game/AI/CoreAI/GuardAI.h | 2 +- src/server/game/AI/CoreAI/PassiveAI.cpp | 2 +- src/server/game/AI/CoreAI/PassiveAI.h | 2 +- src/server/game/AI/CoreAI/PetAI.cpp | 2 +- src/server/game/AI/CoreAI/PetAI.h | 2 +- src/server/game/AI/CoreAI/ReactorAI.cpp | 2 +- src/server/game/AI/CoreAI/ReactorAI.h | 2 +- src/server/game/AI/CoreAI/TotemAI.cpp | 2 +- src/server/game/AI/CoreAI/TotemAI.h | 2 +- src/server/game/AI/CoreAI/UnitAI.cpp | 13 +- src/server/game/AI/CoreAI/UnitAI.h | 13 +- src/server/game/AI/CreatureAI.cpp | 2 +- src/server/game/AI/CreatureAI.h | 2 +- src/server/game/AI/CreatureAIFactory.h | 2 +- src/server/game/AI/CreatureAIImpl.h | 2 +- src/server/game/AI/CreatureAIRegistry.cpp | 2 +- src/server/game/AI/CreatureAIRegistry.h | 2 +- src/server/game/AI/CreatureAISelector.cpp | 2 +- src/server/game/AI/CreatureAISelector.h | 2 +- .../game/AI/EventAI/CreatureEventAI.cpp | 2 +- src/server/game/AI/EventAI/CreatureEventAI.h | 2 +- .../game/AI/EventAI/CreatureEventAIMgr.cpp | 2 +- .../game/AI/EventAI/CreatureEventAIMgr.h | 2 +- .../game/AI/ScriptedAI/ScriptedCreature.cpp | 2 +- .../game/AI/ScriptedAI/ScriptedCreature.h | 2 +- .../game/AI/ScriptedAI/ScriptedEscortAI.cpp | 2 +- .../game/AI/ScriptedAI/ScriptedEscortAI.h | 2 +- .../game/AI/ScriptedAI/ScriptedFollowerAI.cpp | 2 +- .../game/AI/ScriptedAI/ScriptedFollowerAI.h | 2 +- .../game/AI/ScriptedAI/ScriptedGossip.h | 2 +- .../game/AI/ScriptedAI/ScriptedSimpleAI.cpp | 2 +- .../game/AI/ScriptedAI/ScriptedSimpleAI.h | 2 +- .../game/AI/ScriptedAI/sc_npc_teleport.cpp | 363 ++ .../game/AI/ScriptedAI/sc_npc_teleport.h | 140 + src/server/game/AI/SmartScripts/SmartAI.cpp | 2 +- src/server/game/AI/SmartScripts/SmartAI.h | 2 +- .../game/AI/SmartScripts/SmartScript.cpp | 4 +- src/server/game/AI/SmartScripts/SmartScript.h | 2 +- .../game/AI/SmartScripts/SmartScriptMgr.cpp | 3 +- .../game/AI/SmartScripts/SmartScriptMgr.h | 2 +- src/server/game/Accounts/AccountMgr.cpp | 2 +- src/server/game/Accounts/AccountMgr.h | 2 +- .../game/Achievements/AchievementMgr.cpp | 5 +- src/server/game/Achievements/AchievementMgr.h | 2 +- src/server/game/Addons/AddonMgr.cpp | 2 +- src/server/game/Addons/AddonMgr.h | 2 +- .../game/AuctionHouse/AuctionHouseMgr.cpp | 2 +- .../game/AuctionHouse/AuctionHouseMgr.h | 2 +- src/server/game/Battlegrounds/ArenaTeam.cpp | 2 +- src/server/game/Battlegrounds/ArenaTeam.h | 2 +- .../game/Battlegrounds/ArenaTeamMgr.cpp | 2 +- .../game/Battlegrounds/Battleground.cpp | 51 +- src/server/game/Battlegrounds/Battleground.h | 10 +- .../game/Battlegrounds/BattlegroundMgr.cpp | 2 +- .../game/Battlegrounds/BattlegroundQueue.cpp | 2 +- .../game/Battlegrounds/BattlegroundQueue.h | 2 +- .../Battlegrounds/Zones/BattlegroundAA.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundAA.h | 2 +- .../Battlegrounds/Zones/BattlegroundAB.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundAB.h | 2 +- .../Battlegrounds/Zones/BattlegroundAV.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundAV.h | 2 +- .../Battlegrounds/Zones/BattlegroundBE.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundBE.h | 2 +- .../Battlegrounds/Zones/BattlegroundDS.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundDS.h | 2 +- .../Battlegrounds/Zones/BattlegroundEY.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundEY.h | 2 +- .../Battlegrounds/Zones/BattlegroundIC.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundIC.h | 2 +- .../Battlegrounds/Zones/BattlegroundNA.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundNA.h | 2 +- .../Battlegrounds/Zones/BattlegroundRB.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundRB.h | 2 +- .../Battlegrounds/Zones/BattlegroundRL.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundRL.h | 2 +- .../Battlegrounds/Zones/BattlegroundRV.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundRV.h | 2 +- .../Battlegrounds/Zones/BattlegroundSA.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundSA.h | 2 +- .../Battlegrounds/Zones/BattlegroundWS.cpp | 2 +- .../game/Battlegrounds/Zones/BattlegroundWS.h | 2 +- src/server/game/CMakeLists.txt | 2 +- src/server/game/Calendar/CalendarMgr.cpp | 2 +- src/server/game/Calendar/CalendarMgr.h | 2 +- src/server/game/Chat/Chat.cpp | 2 +- src/server/game/Chat/Chat.h | 6 +- src/server/game/Chat/ChatLink.cpp | 2 +- src/server/game/Chat/Commands/Level0.cpp | 2 +- src/server/game/Chat/Commands/Level1.cpp | 2 +- src/server/game/Chat/Commands/Level2.cpp | 2 +- src/server/game/Chat/Commands/Level3.cpp | 2 +- .../game/Chat/Commands/TicketCommands.cpp | 2 +- src/server/game/Combat/HostileRefManager.cpp | 2 +- src/server/game/Combat/HostileRefManager.h | 2 +- src/server/game/Combat/ThreatManager.cpp | 2 +- src/server/game/Combat/ThreatManager.h | 2 +- src/server/game/Conditions/ConditionMgr.cpp | 2 +- src/server/game/Conditions/ConditionMgr.h | 2 +- src/server/game/DataStores/DBCEnums.h | 2 +- src/server/game/DataStores/DBCStores.cpp | 2 +- src/server/game/DataStores/DBCStores.h | 2 +- src/server/game/DataStores/DBCStructure.h | 2 +- src/server/game/DataStores/DBCfmt.h | 2 +- src/server/game/DungeonFinding/LFG.h | 2 +- .../game/DungeonFinding/LFGGroupData.cpp | 2 +- src/server/game/DungeonFinding/LFGGroupData.h | 2 +- src/server/game/DungeonFinding/LFGMgr.cpp | 2 +- src/server/game/DungeonFinding/LFGMgr.h | 2 +- .../game/DungeonFinding/LFGPlayerData.cpp | 2 +- .../game/DungeonFinding/LFGPlayerData.h | 2 +- src/server/game/DungeonFinding/LFGScripts.cpp | 2 +- src/server/game/DungeonFinding/LFGScripts.h | 2 +- src/server/game/Entities/Corpse/Corpse.cpp | 2 +- .../game/Entities/Creature/Creature.cpp | 24 +- src/server/game/Entities/Creature/Creature.h | 9 +- .../game/Entities/Creature/GossipDef.cpp | 2 +- src/server/game/Entities/Creature/GossipDef.h | 2 +- .../Entities/Creature/TemporarySummon.cpp | 2 +- .../game/Entities/Creature/TemporarySummon.h | 2 +- .../Entities/DynamicObject/DynamicObject.cpp | 2 +- .../Entities/DynamicObject/DynamicObject.h | 2 +- .../game/Entities/GameObject/GameObject.cpp | 2 +- .../game/Entities/GameObject/GameObject.h | 2 +- .../game/Entities/Item/Container/Bag.cpp | 2 +- src/server/game/Entities/Item/Container/Bag.h | 2 +- src/server/game/Entities/Item/Item.cpp | 12 +- .../game/Entities/Item/ItemEnchantmentMgr.h | 2 +- src/server/game/Entities/Item/ItemPrototype.h | 2 +- src/server/game/Entities/Object/Object.cpp | 7 +- src/server/game/Entities/Object/Object.h | 2 +- .../game/Entities/Object/ObjectDefines.h | 2 +- .../Entities/Object/ObjectPosSelector.cpp | 2 +- .../game/Entities/Object/ObjectPosSelector.h | 2 +- src/server/game/Entities/Pet/Pet.cpp | 2 +- src/server/game/Entities/Pet/Pet.h | 2 +- src/server/game/Entities/Player/Player.cpp | 320 +- src/server/game/Entities/Player/Player.h | 43 +- src/server/game/Entities/Player/SocialMgr.cpp | 2 +- src/server/game/Entities/Player/SocialMgr.h | 2 +- src/server/game/Entities/Totem/Totem.cpp | 2 +- src/server/game/Entities/Totem/Totem.h | 2 +- .../game/Entities/Transport/Transport.cpp | 239 +- .../game/Entities/Transport/Transport.h | 7 +- src/server/game/Entities/Unit/StatSystem.cpp | 2 +- src/server/game/Entities/Unit/Unit.cpp | 33 +- src/server/game/Entities/Unit/Unit.h | 2 +- src/server/game/Entities/Vehicle/Vehicle.cpp | 2 +- src/server/game/Entities/Vehicle/Vehicle.h | 2 +- src/server/game/Events/GameEventMgr.cpp | 2 +- src/server/game/Globals/ObjectAccessor.cpp | 2 +- src/server/game/Globals/ObjectAccessor.h | 2 +- src/server/game/Globals/ObjectMgr.cpp | 2 +- src/server/game/Globals/ObjectMgr.h | 2 +- src/server/game/Grids/Cells/Cell.h | 2 +- src/server/game/Grids/Cells/CellImpl.h | 2 +- src/server/game/Grids/Grid.h | 2 +- src/server/game/Grids/GridDefines.h | 2 +- src/server/game/Grids/GridLoader.h | 2 +- src/server/game/Grids/GridRefManager.h | 2 +- src/server/game/Grids/GridReference.h | 2 +- src/server/game/Grids/GridStates.cpp | 2 +- src/server/game/Grids/GridStates.h | 2 +- src/server/game/Grids/NGrid.h | 2 +- .../game/Grids/Notifiers/GridNotifiers.cpp | 2 +- .../game/Grids/Notifiers/GridNotifiers.h | 2 +- .../game/Grids/Notifiers/GridNotifiersImpl.h | 2 +- src/server/game/Grids/ObjectGridLoader.cpp | 2 +- src/server/game/Grids/ObjectGridLoader.h | 2 +- src/server/game/Groups/Group.cpp | 2 +- src/server/game/Groups/Group.h | 2 +- src/server/game/Guilds/Guild.cpp | 2 +- src/server/game/Instances/InstanceSaveMgr.cpp | 2 +- src/server/game/Instances/InstanceSaveMgr.h | 2 +- src/server/game/Instances/InstanceScript.cpp | 2 +- src/server/game/Instances/InstanceScript.h | 2 +- src/server/game/Loot/LootMgr.cpp | 19 +- src/server/game/Loot/LootMgr.h | 2 +- src/server/game/Mails/Mail.cpp | 88 +- src/server/game/Mails/Mail.h | 2 +- src/server/game/Maps/Map.cpp | 30 +- src/server/game/Maps/Map.h | 3 +- src/server/game/Maps/MapInstanced.cpp | 2 +- src/server/game/Maps/MapInstanced.h | 2 +- src/server/game/Maps/MapManager.cpp | 2 +- src/server/game/Maps/MapManager.h | 10 +- src/server/game/Maps/MapRefManager.h | 2 +- src/server/game/Maps/MapReference.h | 2 +- src/server/game/Maps/MapUpdater.cpp | 2 +- src/server/game/Maps/MapUpdater.h | 2 +- src/server/game/Maps/ZoneScript.h | 2 +- src/server/game/Miscellaneous/Formulas.h | 2 + src/server/game/Miscellaneous/Language.h | 2 +- src/server/game/Miscellaneous/SharedDefines.h | 6 +- src/server/game/Movement/MotionMaster.cpp | 2 +- src/server/game/Movement/MotionMaster.h | 2 +- .../ChargeMovementGenerator.cpp | 2 +- .../ChargeMovementGenerator.h | 2 +- .../ConfusedMovementGenerator.cpp | 2 +- .../ConfusedMovementGenerator.h | 2 +- .../FleeingMovementGenerator.cpp | 2 +- .../FleeingMovementGenerator.h | 2 +- .../HomeMovementGenerator.cpp | 2 +- .../HomeMovementGenerator.h | 2 +- .../IdleMovementGenerator.cpp | 2 +- .../IdleMovementGenerator.h | 2 +- .../PointMovementGenerator.cpp | 2 +- .../PointMovementGenerator.h | 2 +- .../RandomMovementGenerator.cpp | 2 +- .../RandomMovementGenerator.h | 2 +- .../TargetedMovementGenerator.cpp | 2 +- .../TargetedMovementGenerator.h | 2 +- .../WaypointMovementGenerator.cpp | 2 +- .../WaypointMovementGenerator.h | 2 +- .../game/Movement/Pathfinding/PathFinder.cpp | 2 +- .../game/Movement/Spline/MoveSpline.cpp | 2 +- src/server/game/Movement/Spline/MoveSpline.h | 2 +- .../game/Movement/Spline/MoveSplineFlag.h | 2 +- .../game/Movement/Spline/MoveSplineInit.cpp | 2 +- .../game/Movement/Spline/MoveSplineInit.h | 2 +- .../game/Movement/Spline/MoveSplineInitArgs.h | 2 +- .../Movement/Spline/MovementPacketBuilder.cpp | 2 +- .../Movement/Spline/MovementPacketBuilder.h | 2 +- .../game/Movement/Spline/MovementTypedefs.h | 2 +- .../game/Movement/Spline/MovementUtil.cpp | 2 +- src/server/game/Movement/Spline/Spline.cpp | 2 +- src/server/game/Movement/Spline/Spline.h | 2 +- src/server/game/Movement/Spline/SplineImpl.h | 2 +- src/server/game/OutdoorPvP/OutdoorPvP.cpp | 2 +- src/server/game/OutdoorPvP/OutdoorPvP.h | 2 +- src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp | 2 +- .../PlayerMovementChecker/MovementChecker.cpp | 2 +- .../PlayerMovementChecker/MovementChecker.h | 2 +- src/server/game/Pools/PoolMgr.cpp | 2 +- .../game/PrecompiledHeaders/gamePCH.cpp | 2 +- src/server/game/PrecompiledHeaders/gamePCH.h | 2 +- src/server/game/Quests/QuestDef.cpp | 2 +- src/server/game/Quests/QuestDef.h | 2 +- src/server/game/Reputation/ReputationMgr.cpp | 2 +- src/server/game/Scripting/MapScripts.cpp | 2 +- src/server/game/Scripting/ScriptLoader.cpp | 52 +- src/server/game/Scripting/ScriptLoader.h | 2 +- src/server/game/Scripting/ScriptMgr.cpp | 5 +- src/server/game/Scripting/ScriptMgr.h | 2 +- src/server/game/Scripting/ScriptSystem.cpp | 2 +- src/server/game/Scripting/ScriptSystem.h | 2 +- .../Server/Protocol/Handlers/AddonHandler.cpp | 2 +- .../Server/Protocol/Handlers/AddonHandler.h | 2 +- .../Protocol/Handlers/ArenaTeamHandler.cpp | 2 +- .../Protocol/Handlers/AuctionHouseHandler.cpp | 2 +- .../Server/Protocol/Handlers/AuthHandler.cpp | 2 +- .../Protocol/Handlers/BattleGroundHandler.cpp | 2 +- .../Protocol/Handlers/CalendarHandler.cpp | 2 +- .../Protocol/Handlers/ChannelHandler.cpp | 2 +- .../Protocol/Handlers/CharacterHandler.cpp | 16 +- .../Server/Protocol/Handlers/ChatHandler.cpp | 3 +- .../Protocol/Handlers/CombatHandler.cpp | 2 +- .../Server/Protocol/Handlers/DuelHandler.cpp | 15 +- .../Server/Protocol/Handlers/GroupHandler.cpp | 2 +- .../Server/Protocol/Handlers/GuildHandler.cpp | 2 +- .../Server/Protocol/Handlers/ItemHandler.cpp | 2 +- .../Server/Protocol/Handlers/LFGHandler.cpp | 2 +- .../Server/Protocol/Handlers/LootHandler.cpp | 2 +- .../Server/Protocol/Handlers/MailHandler.cpp | 2 +- .../Server/Protocol/Handlers/MiscHandler.cpp | 2 +- .../Protocol/Handlers/MovementHandler.cpp | 2 +- .../Server/Protocol/Handlers/NPCHandler.cpp | 2 +- .../Server/Protocol/Handlers/NPCHandler.h | 2 +- .../Server/Protocol/Handlers/PetHandler.cpp | 2 +- .../Protocol/Handlers/PetitionsHandler.cpp | 2 +- .../Server/Protocol/Handlers/QueryHandler.cpp | 2 +- .../Server/Protocol/Handlers/QuestHandler.cpp | 2 +- .../Server/Protocol/Handlers/SkillHandler.cpp | 2 +- .../Server/Protocol/Handlers/SpellHandler.cpp | 2 +- .../Server/Protocol/Handlers/TaxiHandler.cpp | 2 +- .../Protocol/Handlers/TicketHandler.cpp | 2 +- .../Server/Protocol/Handlers/TradeHandler.cpp | 2 +- .../Protocol/Handlers/VehicleHandler.cpp | 2 +- .../Protocol/Handlers/VoiceChatHandler.cpp | 2 +- src/server/game/Server/Protocol/Opcodes.cpp | 2 +- src/server/game/Server/Protocol/Opcodes.h | 2 +- src/server/game/Server/WorldSession.cpp | 6 +- src/server/game/Server/WorldSession.h | 8 +- src/server/game/Server/WorldSocket.cpp | 16 +- src/server/game/Server/WorldSocket.h | 2 +- src/server/game/Server/WorldSocketMgr.cpp | 2 +- src/server/game/Server/WorldSocketMgr.h | 2 +- src/server/game/Skills/SkillDiscovery.cpp | 2 +- src/server/game/Skills/SkillDiscovery.h | 2 +- src/server/game/Skills/SkillExtraItems.cpp | 2 +- src/server/game/Skills/SkillExtraItems.h | 2 +- .../game/Spells/Auras/SpellAuraDefines.h | 2 +- .../game/Spells/Auras/SpellAuraEffects.cpp | 5 +- .../game/Spells/Auras/SpellAuraEffects.h | 2 +- src/server/game/Spells/Auras/SpellAuras.cpp | 2 +- src/server/game/Spells/Auras/SpellAuras.h | 2 +- src/server/game/Spells/Spell.cpp | 4 +- src/server/game/Spells/Spell.h | 2 +- src/server/game/Spells/SpellEffects.cpp | 5 +- src/server/game/Spells/SpellMgr.cpp | 10 +- src/server/game/Spells/SpellMgr.h | 2 +- src/server/game/Spells/SpellScript.cpp | 2 +- src/server/game/Spells/SpellScript.h | 2 +- src/server/game/Texts/CreatureTextMgr.cpp | 2 +- src/server/game/Tickets/TicketMgr.cpp | 2 +- src/server/game/Tools/PlayerDump.cpp | 2 +- src/server/game/Tools/PlayerDump.h | 2 +- src/server/game/Warden/WardenBase.cpp | 2 +- src/server/game/Warden/WardenBase.h | 2 +- src/server/game/Warden/WardenDataStorage.cpp | 2 +- src/server/game/Warden/WardenDataStorage.h | 2 +- src/server/game/Warden/WardenMac.cpp | 8 +- src/server/game/Warden/WardenMac.h | 2 +- src/server/game/Warden/WardenModuleMac.h | 2 +- src/server/game/Warden/WardenModuleWin.h | 2 +- src/server/game/Warden/WardenWin.cpp | 8 +- src/server/game/Warden/WardenWin.h | 2 +- src/server/game/Weather/WeatherMgr.cpp | 2 +- src/server/game/World/World.cpp | 113 +- src/server/game/World/World.h | 59 +- src/server/pathfinding/CMakeLists.txt | 2 +- .../PrecompiledHeaders/pathfindingPCH.cpp | 2 +- .../PrecompiledHeaders/pathfindingPCH.h | 2 +- src/server/pathfinding/detour/DetourAlloc.cpp | 2 +- src/server/pathfinding/detour/DetourAlloc.h | 2 +- src/server/pathfinding/detour/DetourAssert.h | 2 +- .../pathfinding/detour/DetourCommon.cpp | 2 +- src/server/pathfinding/detour/DetourCommon.h | 2 +- .../pathfinding/detour/DetourNavMesh.cpp | 2 +- src/server/pathfinding/detour/DetourNavMesh.h | 2 +- .../detour/DetourNavMeshBuilder.cpp | 2 +- .../pathfinding/detour/DetourNavMeshBuilder.h | 2 +- .../pathfinding/detour/DetourNavMeshQuery.cpp | 2 +- .../pathfinding/detour/DetourNavMeshQuery.h | 2 +- src/server/pathfinding/detour/DetourNode.cpp | 2 +- src/server/pathfinding/detour/DetourNode.h | 2 +- .../detour/DetourObstacleAvoidance.cpp | 2 +- .../detour/DetourObstacleAvoidance.h | 2 +- src/server/pathfinding/recast/Recast.cpp | 2 +- src/server/pathfinding/recast/Recast.h | 2 +- src/server/pathfinding/recast/RecastAlloc.cpp | 2 +- src/server/pathfinding/recast/RecastAlloc.h | 2 +- src/server/pathfinding/recast/RecastArea.cpp | 2 +- src/server/pathfinding/recast/RecastAssert.h | 2 +- .../pathfinding/recast/RecastContour.cpp | 2 +- .../pathfinding/recast/RecastFilter.cpp | 2 +- src/server/pathfinding/recast/RecastMesh.cpp | 2 +- .../pathfinding/recast/RecastMeshDetail.cpp | 2 +- .../recast/RecastRasterization.cpp | 2 +- .../pathfinding/recast/RecastRegion.cpp | 2 +- src/server/scripts/CMakeLists.txt | 9 +- src/server/scripts/Commands/cs_account.cpp | 2 +- .../scripts/Commands/cs_achievement.cpp | 2 +- src/server/scripts/Commands/cs_debug.cpp | 2 +- src/server/scripts/Commands/cs_event.cpp | 2 +- src/server/scripts/Commands/cs_gm.cpp | 2 +- src/server/scripts/Commands/cs_go.cpp | 2 +- src/server/scripts/Commands/cs_gobject.cpp | 2 +- src/server/scripts/Commands/cs_gps.cpp | 2 +- src/server/scripts/Commands/cs_honor.cpp | 2 +- src/server/scripts/Commands/cs_learn.cpp | 2 +- src/server/scripts/Commands/cs_modify.cpp | 2 +- src/server/scripts/Commands/cs_npc.cpp | 17 +- src/server/scripts/Commands/cs_quest.cpp | 2 +- src/server/scripts/Commands/cs_reload.cpp | 2 +- src/server/scripts/Commands/cs_tele.cpp | 2 +- src/server/scripts/Commands/cs_titles.cpp | 2 +- src/server/scripts/Commands/cs_vip.cpp | 392 ++ src/server/scripts/Commands/cs_wp.cpp | 2 +- .../scripts/Custom/Transmogrification.cpp | 447 ++ .../scripts/Custom/Transmogrification.h | 140 + src/server/scripts/Custom/npc_teleport.cpp | 210 + .../BlackrockDepths/blackrock_depths.cpp | 2 +- .../BlackrockSpire/blackrock_spire.h | 2 +- .../BlackrockSpire/boss_drakkisath.cpp | 2 +- .../BlackrockSpire/boss_gyth.cpp | 2 +- .../BlackrockSpire/boss_halycon.cpp | 2 +- .../BlackrockSpire/boss_highlord_omokk.cpp | 2 +- .../BlackrockSpire/boss_mother_smolderweb.cpp | 2 +- .../boss_overlord_wyrmthalak.cpp | 2 +- .../boss_pyroguard_emberseer.cpp | 2 +- .../boss_quartermaster_zigris.cpp | 2 +- .../BlackrockSpire/boss_rend_blackhand.cpp | 2 +- .../boss_shadow_hunter_voshgajin.cpp | 2 +- .../BlackrockSpire/boss_the_beast.cpp | 2 +- .../BlackrockSpire/boss_warmaster_voone.cpp | 2 +- .../instance_blackrock_spire.cpp | 2 +- .../boss_broodlord_lashlayer.cpp | 2 +- .../BlackwingLair/boss_chromaggus.cpp | 2 +- .../BlackwingLair/boss_ebonroc.cpp | 2 +- .../BlackwingLair/boss_firemaw.cpp | 2 +- .../BlackwingLair/boss_flamegor.cpp | 2 +- .../BlackwingLair/boss_nefarian.cpp | 2 +- .../BlackwingLair/boss_razorgore.cpp | 2 +- .../BlackwingLair/boss_vaelastrasz.cpp | 2 +- .../BlackwingLair/boss_victor_nefarius.cpp | 2 +- .../EasternKingdoms/Deadmines/deadmines.cpp | 2 +- .../EasternKingdoms/Gnomeregan/gnomeregan.cpp | 2 +- .../EasternKingdoms/Gnomeregan/gnomeregan.h | 2 +- .../Gnomeregan/instance_gnomeregan.cpp | 2 +- .../EasternKingdoms/Karazhan/boss_curator.cpp | 2 +- .../Karazhan/boss_maiden_of_virtue.cpp | 2 +- .../Karazhan/boss_midnight.cpp | 2 +- .../EasternKingdoms/Karazhan/boss_moroes.cpp | 2 +- .../Karazhan/boss_netherspite.cpp | 2 +- .../Karazhan/boss_nightbane.cpp | 2 +- .../Karazhan/boss_prince_malchezaar.cpp | 2 +- .../Karazhan/boss_shade_of_aran.cpp | 2 +- .../Karazhan/boss_terestian_illhoof.cpp | 2 +- .../EasternKingdoms/Karazhan/bosses_opera.cpp | 2 +- .../Karazhan/instance_karazhan.cpp | 2 +- .../EasternKingdoms/Karazhan/karazhan.cpp | 2 +- .../EasternKingdoms/Karazhan/karazhan.h | 2 +- .../boss_felblood_kaelthas.cpp | 2 +- .../boss_priestess_delrissa.cpp | 2 +- .../MagistersTerrace/boss_selin_fireheart.cpp | 2 +- .../MagistersTerrace/boss_vexallus.cpp | 2 +- .../instance_magisters_terrace.cpp | 2 +- .../MagistersTerrace/magisters_terrace.cpp | 2 +- .../MagistersTerrace/magisters_terrace.h | 2 +- .../MoltenCore/boss_majordomo_executus.cpp | 2 +- .../operation_gnomeregan.cpp | 2 +- .../operation_gnomeregan.h | 2 +- .../ScarletEnclave/chapter1.cpp | 2 +- .../ScarletEnclave/chapter2.cpp | 2 +- .../ScarletEnclave/chapter5.cpp | 2 +- .../ScarletEnclave/the_scarlet_enclave.cpp | 2 +- .../ScarletMonastery/boss_arcanist_doan.cpp | 2 +- .../boss_azshir_the_sleepless.cpp | 2 +- .../boss_bloodmage_thalnos.cpp | 2 +- .../boss_headless_horseman.cpp | 2 +- .../ScarletMonastery/boss_herod.cpp | 2 +- .../boss_high_inquisitor_fairbanks.cpp | 2 +- .../boss_houndmaster_loksey.cpp | 2 +- .../boss_interrogator_vishas.cpp | 2 +- .../boss_mograine_and_whitemane.cpp | 2 +- .../ScarletMonastery/boss_scorn.cpp | 2 +- .../instance_scarlet_monastery.cpp | 2 +- .../ScarletMonastery/scarlet_monastery.h | 2 +- .../instance_shadowfang_keep.cpp | 2 +- .../ShadowfangKeep/shadowfang_keep.cpp | 2 +- .../ShadowfangKeep/shadowfang_keep.h | 2 +- .../SunwellPlateau/boss_brutallus.cpp | 2 +- .../SunwellPlateau/boss_eredar_twins.cpp | 2 +- .../SunwellPlateau/boss_felmyst.cpp | 2 +- .../SunwellPlateau/boss_kalecgos.cpp | 2 +- .../SunwellPlateau/boss_kiljaeden.cpp | 2 +- .../SunwellPlateau/boss_muru.cpp | 2 +- .../instance_sunwell_plateau.cpp | 2 +- .../SunwellPlateau/sunwell_plateau.h | 2 +- .../EasternKingdoms/Uldaman/boss_ironaya.cpp | 2 +- .../Uldaman/instance_uldaman.cpp | 2 +- .../EasternKingdoms/Uldaman/uldaman.cpp | 2 +- .../scripts/EasternKingdoms/Uldaman/uldaman.h | 2 +- .../EasternKingdoms/ZulGurub/boss_arlokk.cpp | 2 +- .../ZulGurub/boss_gahzranka.cpp | 2 +- .../EasternKingdoms/ZulGurub/boss_grilek.cpp | 2 +- .../EasternKingdoms/ZulGurub/boss_hakkar.cpp | 2 +- .../ZulGurub/boss_hazzarah.cpp | 2 +- .../EasternKingdoms/ZulGurub/boss_jeklik.cpp | 2 +- .../EasternKingdoms/ZulGurub/boss_jindo.cpp | 2 +- .../ZulGurub/boss_mandokir.cpp | 2 +- .../EasternKingdoms/ZulGurub/boss_marli.cpp | 2 +- .../ZulGurub/boss_renataki.cpp | 2 +- .../EasternKingdoms/ZulGurub/boss_thekal.cpp | 2 +- .../EasternKingdoms/ZulGurub/boss_venoxis.cpp | 2 +- .../ZulGurub/boss_wushoolay.cpp | 2 +- .../ZulGurub/instance_zulgurub.cpp | 2 +- .../EasternKingdoms/ZulGurub/zulgurub.h | 2 +- .../EasternKingdoms/arathi_highlands.cpp | 2 +- .../scripts/EasternKingdoms/blasted_lands.cpp | 2 +- .../scripts/EasternKingdoms/boss_kruul.cpp | 2 +- .../EasternKingdoms/burning_steppes.cpp | 2 +- .../scripts/EasternKingdoms/duskwood.cpp | 2 +- .../EasternKingdoms/eastern_plaguelands.cpp | 2 +- .../EasternKingdoms/eversong_woods.cpp | 2 +- .../scripts/EasternKingdoms/ghostlands.cpp | 2 +- .../scripts/EasternKingdoms/hinterlands.cpp | 2 +- .../scripts/EasternKingdoms/ironforge.cpp | 2 +- .../EasternKingdoms/isle_of_queldanas.cpp | 2 +- .../scripts/EasternKingdoms/loch_modan.cpp | 2 +- .../EasternKingdoms/redridge_mountains.cpp | 2 +- .../scripts/EasternKingdoms/searing_gorge.cpp | 2 +- .../EasternKingdoms/silvermoon_city.cpp | 2 +- .../EasternKingdoms/silverpine_forest.cpp | 2 +- .../EasternKingdoms/stormwind_city.cpp | 2 +- .../EasternKingdoms/stranglethorn_vale.cpp | 2 +- .../EasternKingdoms/swamp_of_sorrows.cpp | 2 +- .../EasternKingdoms/tirisfal_glades.cpp | 2 +- .../scripts/EasternKingdoms/undercity.cpp | 2 +- .../EasternKingdoms/western_plaguelands.cpp | 2 +- .../scripts/EasternKingdoms/westfall.cpp | 2 +- .../scripts/EasternKingdoms/wetlands.cpp | 2 +- .../BattleForMountHyjal/boss_anetheron.cpp | 2 +- .../BattleForMountHyjal/boss_archimonde.cpp | 2 +- .../BattleForMountHyjal/boss_azgalor.cpp | 2 +- .../BattleForMountHyjal/boss_kazrogal.cpp | 2 +- .../boss_rage_winterchill.cpp | 2 +- .../BattleForMountHyjal/hyjal.cpp | 2 +- .../CavernsOfTime/BattleForMountHyjal/hyjal.h | 2 +- .../BattleForMountHyjal/hyjalAI.cpp | 2 +- .../BattleForMountHyjal/hyjalAI.h | 2 +- .../BattleForMountHyjal/hyjal_trash.cpp | 2 +- .../BattleForMountHyjal/hyjal_trash.h | 2 +- .../BattleForMountHyjal/instance_hyjal.cpp | 2 +- .../CullingOfStratholme/boss_epoch.cpp | 2 +- .../CullingOfStratholme/boss_infinite.cpp | 2 +- .../CullingOfStratholme/boss_mal_ganis.cpp | 2 +- .../CullingOfStratholme/boss_meathook.cpp | 2 +- .../CullingOfStratholme/boss_salramm.cpp | 2 +- .../culling_of_stratholme.cpp | 2 +- .../culling_of_stratholme.h | 2 +- .../instance_culling_of_stratholme.cpp | 2 +- .../Kalimdor/OnyxiasLair/boss_onyxia.cpp | 2 +- .../OnyxiasLair/instance_onyxias_lair.cpp | 2 +- .../Kalimdor/OnyxiasLair/onyxias_lair.h | 2 +- .../Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp | 2 +- .../RuinsOfAhnQiraj/boss_kurinnaxx.cpp | 2 +- .../Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp | 2 +- .../Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp | 2 +- .../instance_ruins_of_ahnqiraj.cpp | 2 +- .../Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp | 2 +- .../TempleOfAhnQiraj/temple_of_ahnqiraj.h | 2 +- .../instance_wailing_caverns.cpp | 2 +- .../WailingCaverns/wailing_caverns.cpp | 2 +- .../Kalimdor/WailingCaverns/wailing_caverns.h | 2 +- .../scripts/Kalimdor/azuremyst_isle.cpp | 2 +- .../scripts/Kalimdor/bloodmyst_isle.cpp | 2 +- src/server/scripts/Kalimdor/boss_azuregos.cpp | 2 +- src/server/scripts/Kalimdor/darkshore.cpp | 2 +- src/server/scripts/Kalimdor/desolace.cpp | 2 +- src/server/scripts/Kalimdor/durotar.cpp | 2 +- .../scripts/Kalimdor/dustwallow_marsh.cpp | 2 +- src/server/scripts/Kalimdor/felwood.cpp | 2 +- src/server/scripts/Kalimdor/feralas.cpp | 2 +- src/server/scripts/Kalimdor/moonglade.cpp | 2 +- src/server/scripts/Kalimdor/mulgore.cpp | 2 +- src/server/scripts/Kalimdor/orgrimmar.cpp | 2 +- src/server/scripts/Kalimdor/silithus.cpp | 2 +- src/server/scripts/Kalimdor/tanaris.cpp | 2 +- src/server/scripts/Kalimdor/teldrassil.cpp | 2 +- src/server/scripts/Kalimdor/the_barrens.cpp | 2 +- .../Northrend/AzjolNerub/AhnKahet/ahnkahet.h | 2 +- .../AzjolNerub/AhnKahet/boss_elder_nadox.cpp | 2 +- .../AhnKahet/boss_jedoga_shadowseeker.cpp | 2 +- .../AhnKahet/boss_prince_taldaram.cpp | 2 +- .../AzjolNerub/AhnKahet/instance_ahnkahet.cpp | 2 +- .../boss_krikthir_the_gatewatcher.cpp | 2 +- .../ObsidianSanctum/boss_sartharion.cpp | 2 +- .../instance_obsidian_sanctum.cpp | 2 +- .../ObsidianSanctum/obsidian_sanctum.h | 2 +- .../RubySanctum/boss_baltharus.cpp | 2 +- .../RubySanctum/boss_halion.cpp | 2 +- .../RubySanctum/boss_ragefire.cpp | 2 +- .../RubySanctum/boss_zarithrian.cpp | 2 +- .../RubySanctum/instance_ruby_sanctum.cpp | 2 +- .../RubySanctum/ruby_sanctum.h | 2 +- .../boss_argent_challenge.cpp | 2 +- .../TrialOfTheChampion/boss_black_knight.cpp | 2 +- .../boss_grand_champions.cpp | 2 +- .../instance_trial_of_the_champion.cpp | 2 +- .../trial_of_the_champion.cpp | 6 +- .../trial_of_the_champion.h | 2 +- .../boss_anubarak_trial.cpp | 2 +- .../boss_faction_champions.cpp | 3 +- .../TrialOfTheCrusader/boss_lord_jaraxxus.cpp | 2 +- .../boss_northrend_beasts.cpp | 4 +- .../TrialOfTheCrusader/boss_twin_valkyr.cpp | 2 +- .../instance_trial_of_the_crusader.cpp | 6 +- .../trial_of_the_crusader.cpp | 5 +- .../trial_of_the_crusader.h | 2 +- .../Northrend/DraktharonKeep/boss_dred.cpp | 2 +- .../Northrend/DraktharonKeep/boss_novos.cpp | 2 +- .../DraktharonKeep/boss_tharon_ja.cpp | 2 +- .../DraktharonKeep/boss_trollgore.cpp | 2 +- .../DraktharonKeep/drak_tharon_keep.h | 2 +- .../instance_drak_tharon_keep.cpp | 2 +- .../Gundrak/boss_drakkari_colossus.cpp | 2 +- .../scripts/Northrend/Gundrak/boss_eck.cpp | 2 +- .../Northrend/Gundrak/boss_gal_darah.cpp | 2 +- .../Northrend/Gundrak/boss_moorabi.cpp | 2 +- .../Northrend/Gundrak/boss_slad_ran.cpp | 2 +- .../scripts/Northrend/Gundrak/gundrak.h | 2 +- .../Northrend/Gundrak/instance_gundrak.cpp | 2 +- .../ForgeOfSouls/boss_bronjahm.cpp | 2 +- .../ForgeOfSouls/boss_devourer_of_souls.cpp | 2 +- .../ForgeOfSouls/forge_of_souls.cpp | 6 +- .../FrozenHalls/ForgeOfSouls/forge_of_souls.h | 2 +- .../ForgeOfSouls/instance_forge_of_souls.cpp | 2 +- .../HallsOfReflection/boss_falric.cpp | 2 +- .../HallsOfReflection/boss_marwyn.cpp | 2 +- .../boss_the_lich_king_hor.cpp | 2 +- .../HallsOfReflection/halls_of_reflection.cpp | 12 +- .../HallsOfReflection/halls_of_reflection.h | 2 +- .../instance_halls_of_reflection.cpp | 2 +- .../PitOfSaron/boss_forgemaster_garfrost.cpp | 2 +- .../PitOfSaron/boss_krickandick.cpp | 2 +- .../PitOfSaron/boss_scourgelord_tyrannus.cpp | 2 +- .../PitOfSaron/instance_pit_of_saron.cpp | 2 +- .../FrozenHalls/PitOfSaron/pit_of_saron.cpp | 2 +- .../FrozenHalls/PitOfSaron/pit_of_saron.h | 2 +- .../boss_blood_prince_council.cpp | 2 +- .../boss_blood_queen_lana_thel.cpp | 2 +- .../boss_deathbringer_saurfang.cpp | 10 +- .../IcecrownCitadel/boss_festergut.cpp | 2 +- .../IcecrownCitadel/boss_gunship_battle.cpp | Bin 0 -> 145710 bytes .../boss_lady_deathwhisper.cpp | 2 +- .../IcecrownCitadel/boss_lord_marrowgar.cpp | 2 +- .../boss_professor_putricide.cpp | 2 +- .../IcecrownCitadel/boss_rotface.cpp | 2 +- .../IcecrownCitadel/boss_sindragosa.cpp | 6 +- .../IcecrownCitadel/boss_the_lich_king.cpp | 19 +- .../boss_valithria_dreamwalker.cpp | 6 +- .../IcecrownCitadel/icecrown_citadel.cpp | 2 +- .../IcecrownCitadel/icecrown_citadel.h | 98 +- .../icecrown_citadel_teleport.cpp | 3 +- .../instance_icecrown_citadel.cpp | 416 +- .../Northrend/Naxxramas/boss_anubrekhan.cpp | 2 +- .../Northrend/Naxxramas/boss_faerlina.cpp | 2 +- .../Naxxramas/boss_four_horsemen.cpp | 2 +- .../Northrend/Naxxramas/boss_gluth.cpp | 6 +- .../Northrend/Naxxramas/boss_gothik.cpp | 26 +- .../Northrend/Naxxramas/boss_grobbulus.cpp | 2 +- .../Northrend/Naxxramas/boss_heigan.cpp | 2 +- .../Northrend/Naxxramas/boss_kelthuzad.cpp | 2 +- .../Northrend/Naxxramas/boss_loatheb.cpp | 2 +- .../Northrend/Naxxramas/boss_maexxna.cpp | 2 +- .../scripts/Northrend/Naxxramas/boss_noth.cpp | 2 +- .../Northrend/Naxxramas/boss_patchwerk.cpp | 2 +- .../Northrend/Naxxramas/boss_razuvious.cpp | 2 +- .../Northrend/Naxxramas/boss_sapphiron.cpp | 2 +- .../Northrend/Naxxramas/boss_thaddius.cpp | 2 +- .../Naxxramas/instance_naxxramas.cpp | 55 +- .../scripts/Northrend/Naxxramas/naxxramas.h | 14 +- .../Nexus/EyeOfEternity/boss_malygos.cpp | 2 +- .../Nexus/EyeOfEternity/eye_of_eternity.h | 2 +- .../instance_eye_of_eternity.cpp | 2 +- .../Northrend/Nexus/Nexus/boss_anomalus.cpp | 2 +- .../Nexus/Nexus/boss_keristrasza.cpp | 2 +- .../Nexus/Nexus/boss_magus_telestra.cpp | 2 +- .../Northrend/Nexus/Nexus/boss_ormorok.cpp | 2 +- .../Nexus/Nexus/commander_kolurg.cpp | 2 +- .../Nexus/Nexus/commander_stoutbeard.cpp | 2 +- .../Northrend/Nexus/Nexus/instance_nexus.cpp | 2 +- .../scripts/Northrend/Nexus/Nexus/nexus.h | 2 +- .../Northrend/Nexus/Oculus/boss_drakos.cpp | 2 +- .../Northrend/Nexus/Oculus/boss_eregos.cpp | 2 +- .../Northrend/Nexus/Oculus/boss_urom.cpp | 2 +- .../Northrend/Nexus/Oculus/boss_varos.cpp | 2 +- .../Nexus/Oculus/instance_oculus.cpp | 2 +- .../scripts/Northrend/Nexus/Oculus/oculus.cpp | 18 +- .../scripts/Northrend/Nexus/Oculus/oculus.h | 2 +- .../HallsOfLightning/boss_bjarngrim.cpp | 2 +- .../Ulduar/HallsOfLightning/boss_ionar.cpp | 2 +- .../Ulduar/HallsOfLightning/boss_loken.cpp | 2 +- .../Ulduar/HallsOfLightning/boss_volkhan.cpp | 2 +- .../HallsOfLightning/halls_of_lightning.h | 2 +- .../instance_halls_of_lightning.cpp | 2 +- .../Ulduar/HallsOfStone/boss_krystallus.cpp | 2 +- .../HallsOfStone/boss_maiden_of_grief.cpp | 2 +- .../Ulduar/HallsOfStone/boss_sjonnir.cpp | 2 +- .../Ulduar/HallsOfStone/halls_of_stone.cpp | 8 +- .../Ulduar/HallsOfStone/halls_of_stone.h | 2 +- .../HallsOfStone/instance_halls_of_stone.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_algalon.cpp | 2 +- .../Ulduar/Ulduar/boss_assembly_of_iron.cpp | 4 +- .../Northrend/Ulduar/Ulduar/boss_auriaya.cpp | 2 +- .../Ulduar/Ulduar/boss_flame_leviathan.cpp | 12 +- .../Northrend/Ulduar/Ulduar/boss_freya.cpp | 2 +- .../Ulduar/Ulduar/boss_general_vezax.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_hodir.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_ignis.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_kologarn.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_mimiron.cpp | 4 +- .../Ulduar/Ulduar/boss_razorscale.cpp | 6 +- .../Northrend/Ulduar/Ulduar/boss_thorim.cpp | 6 +- .../Northrend/Ulduar/Ulduar/boss_xt002.cpp | 2 +- .../Ulduar/Ulduar/boss_yoggsaron.cpp | 2 +- .../Ulduar/Ulduar/instance_ulduar.cpp | 2 +- .../scripts/Northrend/Ulduar/Ulduar/ulduar.h | 2 +- .../Ulduar/Ulduar/ulduar_teleporter.cpp | 20 +- .../UtgardeKeep/boss_ingvar_the_plunderer.cpp | 2 +- .../UtgardeKeep/UtgardeKeep/boss_keleseth.cpp | 2 +- .../UtgardeKeep/boss_skarvald_dalronn.cpp | 2 +- .../UtgardeKeep/instance_utgarde_keep.cpp | 2 +- .../UtgardeKeep/UtgardeKeep/utgarde_keep.cpp | 2 +- .../UtgardeKeep/UtgardeKeep/utgarde_keep.h | 2 +- .../UtgardePinnacle/boss_palehoof.cpp | 2 +- .../UtgardePinnacle/boss_skadi.cpp | 6 +- .../UtgardePinnacle/boss_svala.cpp | 2 +- .../UtgardePinnacle/boss_ymiron.cpp | 2 +- .../UtgardePinnacle/instance_pinnacle.cpp | 2 +- .../UtgardePinnacle/utgarde_pinnacle.h | 2 +- .../VaultOfArchavon/boss_archavon.cpp | 4 +- .../Northrend/VaultOfArchavon/boss_emalon.cpp | 2 +- .../VaultOfArchavon/boss_koralon.cpp | 2 +- .../VaultOfArchavon/boss_toravon.cpp | 2 +- .../instance_vault_of_archavon.cpp | 2 +- .../VaultOfArchavon/vault_of_archavon.h | 2 +- .../Northrend/VioletHold/boss_cyanigosa.cpp | 2 +- .../Northrend/VioletHold/boss_erekem.cpp | 2 +- .../Northrend/VioletHold/boss_lavanthor.cpp | 2 +- .../Northrend/VioletHold/boss_moragg.cpp | 2 +- .../Northrend/VioletHold/boss_xevozz.cpp | 2 +- .../Northrend/VioletHold/boss_zuramat.cpp | 2 +- .../VioletHold/instance_violet_hold.cpp | 2 +- .../Northrend/VioletHold/violet_hold.cpp | 8 +- .../Northrend/VioletHold/violet_hold.h | 2 +- .../scripts/Northrend/borean_tundra.cpp | 14 +- .../scripts/Northrend/crystalsong_forest.cpp | 2 +- src/server/scripts/Northrend/dalaran.cpp | 4 +- src/server/scripts/Northrend/dragonblight.cpp | 6 +- .../scripts/Northrend/grizzly_hills.cpp | 12 +- .../scripts/Northrend/howling_fjord.cpp | 10 +- src/server/scripts/Northrend/icecrown.cpp | 42 +- .../scripts/Northrend/isle_of_conquest.cpp | 2 +- .../scripts/Northrend/sholazar_basin.cpp | 36 +- src/server/scripts/Northrend/storm_peaks.cpp | 28 +- src/server/scripts/Northrend/wintergrasp.cpp | 14 +- src/server/scripts/Northrend/zuldrak.cpp | 24 +- .../scripts/OutdoorPvP/OutdoorPvPEP.cpp | 2 +- src/server/scripts/OutdoorPvP/OutdoorPvPEP.h | 2 +- .../scripts/OutdoorPvP/OutdoorPvPHP.cpp | 2 +- src/server/scripts/OutdoorPvP/OutdoorPvPHP.h | 2 +- .../scripts/OutdoorPvP/OutdoorPvPNA.cpp | 2 +- src/server/scripts/OutdoorPvP/OutdoorPvPNA.h | 2 +- .../scripts/OutdoorPvP/OutdoorPvPSI.cpp | 2 +- src/server/scripts/OutdoorPvP/OutdoorPvPSI.h | 2 +- .../scripts/OutdoorPvP/OutdoorPvPTF.cpp | 2 +- src/server/scripts/OutdoorPvP/OutdoorPvPTF.h | 2 +- .../scripts/OutdoorPvP/OutdoorPvPWG.cpp | 2 +- src/server/scripts/OutdoorPvP/OutdoorPvPWG.h | 2 +- .../scripts/OutdoorPvP/OutdoorPvPZM.cpp | 2 +- src/server/scripts/OutdoorPvP/OutdoorPvPZM.h | 2 +- .../ManaTombs/boss_nexusprince_shaffar.cpp | 2 +- .../SethekkHalls/boss_tailonking_ikiss.cpp | 2 +- .../boss_blackheart_the_inciter.cpp | 2 +- .../boss_grandmaster_vorpil.cpp | 2 +- .../Outland/BlackTemple/boss_illidan.cpp | 2 +- .../BlackTemple/boss_mother_shahraz.cpp | 2 +- .../BlackTemple/boss_reliquary_of_souls.cpp | 2 +- .../BlackTemple/boss_shade_of_akama.cpp | 2 +- .../Outland/BlackTemple/boss_supremus.cpp | 2 +- .../BlackTemple/boss_teron_gorefiend.cpp | 2 +- .../BlackTemple/boss_warlord_najentus.cpp | 2 +- .../Outland/BlackTemple/illidari_council.cpp | 2 +- .../SerpentShrine/boss_lady_vashj.cpp | 2 +- .../boss_leotheras_the_blind.cpp | 2 +- .../SlavePens/boss_ahune.cpp | 2 +- .../SteamVault/boss_hydromancer_thespia.cpp | 2 +- .../SteamVault/boss_mekgineer_steamrigger.cpp | 2 +- .../SteamVault/boss_warlord_kalithresh.cpp | 2 +- .../scripts/Outland/GruulsLair/boss_gruul.cpp | 2 +- .../BloodFurnace/blood_furnace.h | 2 +- .../BloodFurnace/boss_broggok.cpp | 2 +- .../BloodFurnace/boss_kelidan_the_breaker.cpp | 2 +- .../BloodFurnace/boss_the_maker.cpp | 2 +- .../BloodFurnace/instance_blood_furnace.cpp | 2 +- .../MagtheridonsLair/boss_magtheridon.cpp | 2 +- .../ShatteredHalls/boss_nethekurse.cpp | 2 +- .../ShatteredHalls/boss_warbringer_omrogg.cpp | 2 +- .../Outland/TempestKeep/Eye/boss_alar.cpp | 2 +- .../TempestKeep/Eye/boss_astromancer.cpp | 2 +- .../Outland/TempestKeep/Eye/boss_kaelthas.cpp | 2 +- .../TempestKeep/Eye/boss_void_reaver.cpp | 2 +- .../Mechanar/boss_gatewatcher_ironhand.cpp | 2 +- .../Mechanar/boss_nethermancer_sepethrea.cpp | 2 +- .../boss_pathaleon_the_calculator.cpp | 2 +- .../Mechanar/instance_mechanar.cpp | 2 +- .../Outland/TempestKeep/Mechanar/mechanar.h | 2 +- .../arcatraz/boss_harbinger_skyriss.cpp | 2 +- .../botanica/boss_high_botanist_freywinn.cpp | 2 +- .../Outland/TempestKeep/botanica/boss_laj.cpp | 2 +- .../botanica/boss_warp_splinter.cpp | 2 +- .../scripts/Outland/blades_edge_mountains.cpp | 2 +- .../scripts/Outland/boss_doomlord_kazzak.cpp | 2 +- .../scripts/Outland/boss_doomwalker.cpp | 2 +- .../scripts/Outland/hellfire_peninsula.cpp | 2 +- src/server/scripts/Outland/nagrand.cpp | 2 +- src/server/scripts/Outland/netherstorm.cpp | 2 +- .../scripts/Outland/shadowmoon_valley.cpp | 2 +- src/server/scripts/Outland/shattrath_city.cpp | 2 +- .../scripts/Outland/terokkar_forest.cpp | 2 +- src/server/scripts/Outland/zangarmarsh.cpp | 2 +- .../scripts/PrecompiledHeaders/ScriptPCH.cpp | 2 +- .../scripts/PrecompiledHeaders/ScriptPCH.h | 2 +- src/server/scripts/Spells/spell_dk.cpp | 2 +- src/server/scripts/Spells/spell_druid.cpp | 2 +- src/server/scripts/Spells/spell_generic.cpp | 2 +- src/server/scripts/Spells/spell_hunter.cpp | 2 +- src/server/scripts/Spells/spell_item.cpp | 2 +- src/server/scripts/Spells/spell_mage.cpp | 2 +- src/server/scripts/Spells/spell_paladin.cpp | 2 +- src/server/scripts/Spells/spell_priest.cpp | 2 +- src/server/scripts/Spells/spell_quest.cpp | 2 +- src/server/scripts/Spells/spell_rogue.cpp | 2 +- src/server/scripts/Spells/spell_shaman.cpp | 2 +- src/server/scripts/Spells/spell_warlock.cpp | 2 +- src/server/scripts/Spells/spell_warrior.cpp | 2 +- .../scripts/World/achievement_scripts.cpp | 2 +- .../scripts/World/areatrigger_scripts.cpp | 2 +- src/server/scripts/World/attaquecapitalA2.cpp | 5113 +++++++++++++++++ src/server/scripts/World/attaquecapitalA2.h | 532 ++ src/server/scripts/World/attaquecapitalH2.cpp | 4878 ++++++++++++++++ src/server/scripts/World/attaquecapitalH2.h | 499 ++ .../scripts/World/boss_emerald_dragons.cpp | 2 +- src/server/scripts/World/brewfest_event.cpp | 2 +- src/server/scripts/World/chat_log.cpp | 2 +- src/server/scripts/World/go_scripts.cpp | 2 +- src/server/scripts/World/guards.cpp | 2 +- .../scripts/World/item_resetinstance.cpp | 64 + src/server/scripts/World/item_scripts.cpp | 2 +- .../scripts/World/mob_generic_creature.cpp | 2 +- src/server/scripts/World/morph_system.cpp | 140 + src/server/scripts/World/npc_beastmaster.cpp | 268 + src/server/scripts/World/npc_boutique.cpp | 163 + src/server/scripts/World/npc_buff.cpp | 494 ++ .../scripts/World/npc_change_character.cpp | 110 + .../npc_honneur_sceau_de_champion_fun.cpp | 405 ++ src/server/scripts/World/npc_innkeeper.cpp | 2 +- src/server/scripts/World/npc_magicien.cpp | 112 + src/server/scripts/World/npc_marquegoulet.cpp | 114 + src/server/scripts/World/npc_professions.cpp | 2 +- src/server/scripts/World/npc_rapidchange.cpp | 412 ++ src/server/scripts/World/npc_reputation.cpp | 511 ++ src/server/scripts/World/npc_roinagas.cpp | 157 + src/server/scripts/World/npc_shadowmourn.cpp | 69 + src/server/scripts/World/npc_taxi.cpp | 2 +- src/server/scripts/World/npc_transfers.cpp | 890 +++ src/server/scripts/World/npc_welcome.cpp | 62 + src/server/scripts/World/npcs_special.cpp | 17 +- src/server/scripts/World/pilgrims_event.cpp | 2 +- .../scripts/World/premiere_connexion.cpp | 23 + src/server/scripts/World/professionnpc.cpp | 372 ++ src/server/scripts/World/pvps_system.cpp | 478 ++ src/server/shared/CMakeLists.txt | 2 +- src/server/shared/Common.cpp | 2 +- src/server/shared/Common.h | 12 +- src/server/shared/CompilerDefs.h | 2 +- src/server/shared/Configuration/Config.cpp | 2 +- src/server/shared/Cryptography/ARC4.cpp | 2 +- src/server/shared/Cryptography/ARC4.h | 2 +- .../Cryptography/Authentication/AuthCrypt.cpp | 2 +- .../Cryptography/Authentication/AuthCrypt.h | 2 +- .../Authentication/WardenKeyGeneration.h | 2 +- src/server/shared/Cryptography/BigNumber.cpp | 2 +- src/server/shared/Cryptography/BigNumber.h | 2 +- src/server/shared/Cryptography/HMACSHA1.cpp | 2 +- src/server/shared/Cryptography/HMACSHA1.h | 2 +- src/server/shared/Cryptography/SHA1.cpp | 2 +- src/server/shared/Cryptography/SHA1.h | 2 +- .../shared/DataStores/DBCFileLoader.cpp | 2 +- src/server/shared/DataStores/DBCFileLoader.h | 2 +- src/server/shared/DataStores/DBCStore.h | 2 +- src/server/shared/Database/AdhocStatement.cpp | 2 +- src/server/shared/Database/AdhocStatement.h | 2 +- src/server/shared/Database/DatabaseEnv.h | 2 +- src/server/shared/Database/DatabaseWorker.cpp | 2 +- src/server/shared/Database/DatabaseWorker.h | 2 +- .../shared/Database/DatabaseWorkerPool.h | 2 +- src/server/shared/Database/Field.cpp | 2 +- src/server/shared/Database/Field.h | 2 +- .../Implementation/CharacterDatabase.cpp | 2 +- .../Implementation/CharacterDatabase.h | 2 +- .../Database/Implementation/LoginDatabase.cpp | 2 +- .../Database/Implementation/LoginDatabase.h | 2 +- .../Database/Implementation/WorldDatabase.cpp | 2 +- .../Database/Implementation/WorldDatabase.h | 2 +- .../shared/Database/MySQLConnection.cpp | 2 +- src/server/shared/Database/MySQLConnection.h | 2 +- src/server/shared/Database/MySQLThreading.h | 2 +- .../shared/Database/PreparedStatement.cpp | 2 +- .../shared/Database/PreparedStatement.h | 2 +- src/server/shared/Database/QueryHolder.cpp | 2 +- src/server/shared/Database/QueryHolder.h | 2 +- src/server/shared/Database/QueryResult.cpp | 2 +- src/server/shared/Database/QueryResult.h | 2 +- src/server/shared/Database/SQLOperation.h | 2 +- src/server/shared/Database/Transaction.cpp | 2 +- src/server/shared/Database/Transaction.h | 2 +- src/server/shared/Debugging/Errors.h | 2 +- src/server/shared/Define.h | 2 +- src/server/shared/Dynamic/LinkedList.h | 2 +- .../Dynamic/LinkedReference/RefManager.h | 2 +- .../Dynamic/LinkedReference/Reference.h | 2 +- src/server/shared/Dynamic/TypeContainer.h | 2 +- .../shared/Dynamic/TypeContainerFunctions.h | 2 +- .../shared/Dynamic/TypeContainerVisitor.h | 2 +- src/server/shared/Logging/Log.cpp | 2 +- src/server/shared/Logging/Log.h | 2 +- src/server/shared/Packets/ByteBuffer.h | 2 +- src/server/shared/Packets/WorldPacket.h | 2 +- .../shared/PrecompiledHeaders/sharedPCH.cpp | 2 +- .../shared/PrecompiledHeaders/sharedPCH.h | 2 +- src/server/shared/SystemConfig.h | 4 +- src/server/shared/Threading/Callback.h | 2 +- src/server/shared/Threading/LockedQueue.h | 2 +- src/server/shared/Threading/Threading.cpp | 2 +- src/server/shared/UnicodeConvert.h | 334 ++ .../shared/Utilities/EventProcessor.cpp | 2 +- src/server/shared/Utilities/ServiceWin32.cpp | 2 +- src/server/shared/Utilities/Timer.h | 2 +- src/server/shared/Utilities/Util.cpp | 2 +- src/server/shared/Utilities/Util.h | 2 +- src/server/worldserver/CMakeLists.txt | 6 +- .../worldserver/CommandLine/CliRunnable.cpp | 2 +- .../worldserver/CommandLine/CliRunnable.h | 2 +- src/server/worldserver/Main.cpp | 9 +- src/server/worldserver/Master.cpp | 2 +- src/server/worldserver/Master.h | 2 +- .../PrecompiledHeaders/worldPCH.cpp | 2 +- .../worldserver/PrecompiledHeaders/worldPCH.h | 2 +- .../worldserver/RemoteAccess/RARunnable.cpp | 2 +- .../worldserver/RemoteAccess/RARunnable.h | 2 +- .../worldserver/RemoteAccess/RASocket.cpp | 2 +- .../worldserver/RemoteAccess/RASocket.h | 2 +- src/server/worldserver/TCSoap/TCSoap.cpp | 2 +- src/server/worldserver/TCSoap/TCSoap.h | 2 +- .../worldserver/WorldThread/WorldRunnable.cpp | 2 +- .../worldserver/WorldThread/WorldRunnable.h | 2 +- src/server/worldserver/resource.h | 2 +- src/server/worldserver/worldserver.conf.dist | 255 +- src/server/worldserver/worldserver.rc | 2 +- 983 files changed, 22275 insertions(+), 1573 deletions(-) create mode 100644 sql/SQL Custom/#3203_Premium_accounts_auth.sql create mode 100644 sql/SQL Custom/#3203_Premium_accounts_world.sql create mode 100644 sql/SQL Custom/NPC - ADDR.sql create mode 100644 sql/SQL Custom/NPC - transfers.sql create mode 100644 sql/SQL Custom/NPC teleporteur.sql create mode 100644 "sql/SQL Custom/NPC t\303\203\302\251l\303\203\302\251porteur.sql" create mode 100644 sql/SQL Custom/VIP - World.sql create mode 100644 sql/SQL Custom/characters_armory.sql create mode 100644 sql/SQL Custom/npc-transmogrification.sql create mode 100644 sql/SQL Custom/transmogrification-characters.sql create mode 100644 sql/SQL Custom/trinit_string_transmogification.sql create mode 100644 src/server/game/AI/ScriptedAI/sc_npc_teleport.cpp create mode 100644 src/server/game/AI/ScriptedAI/sc_npc_teleport.h create mode 100644 src/server/scripts/Commands/cs_vip.cpp create mode 100644 src/server/scripts/Custom/Transmogrification.cpp create mode 100644 src/server/scripts/Custom/Transmogrification.h create mode 100644 src/server/scripts/Custom/npc_teleport.cpp create mode 100644 src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_gunship_battle.cpp create mode 100644 src/server/scripts/World/attaquecapitalA2.cpp create mode 100644 src/server/scripts/World/attaquecapitalA2.h create mode 100644 src/server/scripts/World/attaquecapitalH2.cpp create mode 100644 src/server/scripts/World/attaquecapitalH2.h create mode 100644 src/server/scripts/World/item_resetinstance.cpp create mode 100644 src/server/scripts/World/morph_system.cpp create mode 100644 src/server/scripts/World/npc_beastmaster.cpp create mode 100644 src/server/scripts/World/npc_boutique.cpp create mode 100644 src/server/scripts/World/npc_buff.cpp create mode 100644 src/server/scripts/World/npc_change_character.cpp create mode 100644 src/server/scripts/World/npc_honneur_sceau_de_champion_fun.cpp create mode 100644 src/server/scripts/World/npc_magicien.cpp create mode 100644 src/server/scripts/World/npc_marquegoulet.cpp create mode 100644 src/server/scripts/World/npc_rapidchange.cpp create mode 100644 src/server/scripts/World/npc_reputation.cpp create mode 100644 src/server/scripts/World/npc_roinagas.cpp create mode 100644 src/server/scripts/World/npc_shadowmourn.cpp create mode 100644 src/server/scripts/World/npc_transfers.cpp create mode 100644 src/server/scripts/World/npc_welcome.cpp create mode 100644 src/server/scripts/World/premiere_connexion.cpp create mode 100644 src/server/scripts/World/professionnpc.cpp create mode 100644 src/server/scripts/World/pvps_system.cpp create mode 100644 src/server/shared/UnicodeConvert.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 794713a..b7e0bca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2012 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/README.md b/README.md index cad4bde..7379740 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ MythCore ======== -MythCore v12.54 by Desch +MythCore v12.54 Custom B by Desch zonewow.com diff --git a/cmake/showoptions.cmake b/cmake/showoptions.cmake index 612749e..62cf2d6 100644 --- a/cmake/showoptions.cmake +++ b/cmake/showoptions.cmake @@ -10,7 +10,7 @@ # # output generic information about the core and buildtype chosen -message("* Myth Core Revision : 12.54.${rev_id_str} HASH:${rev_hash_str}") +message("* Myth Core Revision : 12.53.${rev_id_str} HASH:${rev_hash_str}") if( UNIX ) message("* Build binaries in : ${CMAKE_BUILD_TYPE} mode") endif() diff --git a/dep/acelite/ace/CMakeLists.txt b/dep/acelite/ace/CMakeLists.txt index cace58e..de98681 100644 --- a/dep/acelite/ace/CMakeLists.txt +++ b/dep/acelite/ace/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/dep/acelite/ace/PrecompiledHeaders/WinAcePCH.cpp b/dep/acelite/ace/PrecompiledHeaders/WinAcePCH.cpp index 4034c3b..63b1a8c 100644 --- a/dep/acelite/ace/PrecompiledHeaders/WinAcePCH.cpp +++ b/dep/acelite/ace/PrecompiledHeaders/WinAcePCH.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/dep/g3dlite/CMakeLists.txt b/dep/g3dlite/CMakeLists.txt index 2ad4bbb..aeaa496 100644 --- a/dep/g3dlite/CMakeLists.txt +++ b/dep/g3dlite/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/dep/gsoap/CMakeLists.txt b/dep/gsoap/CMakeLists.txt index 8f7e28b..f5c7fef 100644 --- a/dep/gsoap/CMakeLists.txt +++ b/dep/gsoap/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/dep/zlib/CMakeLists.txt b/dep/zlib/CMakeLists.txt index f8e6ccf..31edf04 100644 --- a/dep/zlib/CMakeLists.txt +++ b/dep/zlib/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/sql/#1xxxx_myth_update_world.sql b/sql/#1xxxx_myth_update_world.sql index be8adf6..65dd4cf 100644 --- a/sql/#1xxxx_myth_update_world.sql +++ b/sql/#1xxxx_myth_update_world.sql @@ -18,7 +18,7 @@ CREATE TABLE `version` ( `cache_id` INT(4) DEFAULT 0 ) ENGINE = MYISAM DEFAULT CHARSET = utf8 ROW_FORMAT = FIXED; INSERT INTO `version` VALUES - ('MythDB v12.54', 'MythAI v12.54', 1254); -- BASED ON YTDB 604 + ('MythDB v12.53', 'MythAI v12.53', 1253); -- BASED ON YTDB 604 -- -------------------------------------------------------------------------} -- -------------------- Myth Project "Achievements" Update ----------------- -- -------------------------------------------------------------------------{ @@ -853,7 +853,7 @@ UPDATE `creature` SET `spawntimesecs` = 604800 WHERE `guid` = 104364; -- NPC: Rotface, http://wotlk.openwow.com/npc=36627 DELETE FROM `creature_text` WHERE `entry` IN (36628, 36627) AND `groupid` = 9; INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES - (36627, 9, 0,'|TInterface\\Icons\\ability_creature_disease_02.blp:16|tYou have |cFF00FF00Mutated Infection!|r', 42, 0, 0, 0, 0, 0,'Rotface - EMOTE_MUTATED_INFECTION'); + (36627, 9, 0,'|TInterface\\Icons\\ability_creature_disease_02.blp:16|tVous Souffrez |cFF00FF00d''Infection mutée!|r', 42, 0, 0, 0, 0, 0,'Rotface - EMOTE_MUTATED_INFECTION'); -- NPC: Lich King, http://wotlk.openwow.com/npc=36597 UPDATE `spell_target_position` SET `target_position_z` = 1041.00 WHERE `id` = 70860; -- Achievements: Portal Jockey, http://wotlk.openwow.com/achievement=4579 , 4619 @@ -861,6 +861,736 @@ UPDATE `achievement_criteria_data` SET `value1` = 2 WHERE `criteria_id` = 12979 UPDATE `achievement_criteria_data` SET `value1` = 1 WHERE `criteria_id` = 12971 AND `type` = 12; -- NPC: Mutated Abomination, http://www.wowhead.com/npc=37672 (ICC25H) UPDATE `creature_template` SET `spell3` = 70542 WHERE `entry` = 38790; +-- ------------------------------------------------------------------------- +DELETE FROM `creature_template` WHERE `entry` IN (50004, 50006); +INSERT INTO `creature_template`(`entry`,`difficulty_entry_1`,`difficulty_entry_2`,`difficulty_entry_3`,`KillCredit1`,`KillCredit2`,`modelid1`,`modelid2`,`modelid3`,`modelid4`,`name`,`subname`,`IconName`,`gossip_menu_id`,`minlevel`,`maxlevel`,`exp`,`faction_A`,`faction_H`,`npcflag`,`speed_walk`,`speed_run`,`scale`,`rank`,`mindmg`,`maxdmg`,`dmgschool`,`attackpower`,`dmg_multiplier`,`baseattacktime`,`rangeattacktime`,`unit_class`,`unit_flags`,`dynamicflags`,`family`,`trainer_type`,`trainer_spell`,`trainer_class`,`trainer_race`,`minrangedmg`,`maxrangedmg`,`rangedattackpower`,`type`,`type_flags`,`lootid`,`pickpocketloot`,`skinloot`,`resistance1`,`resistance2`,`resistance3`,`resistance4`,`resistance5`,`resistance6`,`spell1`,`spell2`,`spell3`,`spell4`,`spell5`,`spell6`,`spell7`,`spell8`,`PetSpellDataId`,`VehicleId`,`mingold`,`maxgold`,`AIName`,`MovementType`,`InhabitType`,`Health_mod`,`Mana_mod`,`Armor_mod`,`RacialLeader`,`questItem1`,`questItem2`,`questItem3`,`questItem4`,`questItem5`,`questItem6`,`movementId`,`RegenHealth`,`equipment_id`,`mechanic_immune_mask`,`flags_extra`,`ScriptName`,`WDBVerified`) VALUES + (50004, 0, 0, 0, 0, 0, 11686, 0, 0, 0,'High Overlord Saurfang','','', 0, 80, 80, 2, 1802, 1802, 0, 0, 0, 1, 1, 252, 357, 0, 304, 7.5, 2000, 0, 1, 33554432, 8, 0, 0, 0, 0, 0, 215, 320, 44, 7, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'', 0, 3, 1000, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,'', 12340), + (50006, 0, 0, 0, 0, 0, 11686, 0, 0, 0,'Muradin Bronzebeard','','', 10875, 83, 83, 2, 1802, 1802, 1, 1, 1.14286, 1, 1, 468, 702, 0, 175, 47.2, 2000, 2000, 1, 33554432, 8, 0, 0, 0, 0, 0, 374, 562, 140, 7, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15284, 70309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'', 0, 3, 175, 1, 1, 0, 0, 0, 0, 0, 0, 0, 164, 1, 0, 0, 0,'', 12340); +UPDATE `creature_template` SET `flags_extra` = 2 WHERE `entry` IN (50004, 50006); +UPDATE `creature_template` SET `npcflag` = 1 WHERE `entry` IN (36939, 38156, 38637, 38638); +UPDATE `creature_template` SET `faction_A` = 1801,`faction_H` = 1801,`baseattacktime` = 2000,`rangeattacktime` = 2000,`unit_flags` = 32832,`spell1` = 71339,`spell2` = 70161,`spell3` = 72539,`mechanic_immune_mask` = 73745 WHERE `entry` IN (36968, 38403, 38675, 38676); +UPDATE `creature_template` SET `faction_A` = 1802,`faction_H` = 1802,`baseattacktime` = 2000,`rangeattacktime` = 2000,`unit_flags` = 32832,`spell1` = 71335,`spell2` = 70162,`spell3` = 72566,`mechanic_immune_mask` = 73745 WHERE `entry` IN (36969, 38408, 38689, 38690); +DELETE FROM `creature` WHERE `id` IN (37003, 37026); +INSERT INTO `creature`(`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES + (190000, 37026, 631, 15, 1, 0, 0, -571.091, 2219.71, 199.969, 5.06842, 86400, 0, 0, 269600, 91600, 0, 0, 0, 0), + (190001, 37003, 631, 15, 1, 0, 0, -562.385, 2217.58, 199.969, 3.46228, 86400, 0, 0, 398434, 41690, 0, 0, 0, 0); +UPDATE `creature_template` SET `ScriptName` = 'npc_muradin_gunship' WHERE `entry` = 36948; +UPDATE `creature_template` SET `ScriptName` = 'npc_saurfang_gunship' WHERE `entry` = 36939; +UPDATE `creature_template` SET `ScriptName` = 'npc_zafod_boombox' WHERE `entry` = 37184; +UPDATE `creature_template` SET `ScriptName` = 'npc_korkron_defender' WHERE `entry` = 37032; +UPDATE `creature_template` SET `ScriptName` = 'npc_korkron_primalist' WHERE `entry` = 37030; +UPDATE `creature_template` SET `ScriptName` = 'npc_skybreaker_vindicator' WHERE `entry` = 37003; +UPDATE `creature_template` SET `ScriptName` = 'npc_skybreaker_protector' WHERE `entry` = 36998; +UPDATE `creature_template` SET `ScriptName` = 'npc_icc_spire_frostwyrm' WHERE `entry` = 37230; +UPDATE `creature_template` SET `ScriptName` = 'npc_korkron_axethrower_rifleman' WHERE `entry` IN (36968, 36969); +UPDATE `creature_template` SET `ScriptName` = 'npc_mortar_soldier_or_rocketeer', AIName = '' WHERE `entry` IN (36982, 36978); +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_mage' WHERE `entry`IN (37117, 37116); +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_trigger' WHERE `entry` = 37547; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_portal' WHERE `entry` = 37227; +UPDATE `creature_template` SET `ScriptName` = 'npc_marine_or_reaver' WHERE `entry` IN (36957, 36950); +UPDATE `creature_template` SET `ScriptName` = 'npc_sergeant' WHERE `entry` IN (36960, 36961); +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_skybreaker' WHERE `entry` = 37540; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_orgrimmar' WHERE `entry` = 37215; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_cannon' WHERE `entry` IN (36838, 36839); +UPDATE `creature_template` SET `dmg_multiplier` = 4 WHERE `entry` IN (36838, 36839); +UPDATE `gameobject_template` SET `ScriptName` = 'transport_gunship' WHERE `entry` IN (201580, 201812); +DELETE FROM `areatrigger_scripts` WHERE `entry` IN (5630, 5628); +INSERT INTO `areatrigger_scripts`(`entry`,`ScriptName`) VALUES + (5628,'at_icc_land_frostwyrm'), (5630,'at_icc_land_frostwyrm'); +DELETE FROM `spell_script_names` WHERE `spell_id` IN (70713, 68645, 69471, 69488, 69402, 70175, 71335, 71339, 69399, 70172); +INSERT INTO `spell_script_names`(`spell_id`,`ScriptName`) VALUES + (70713,'spell_icc_remove_rocket_pack'), (68645,'spell_rocket_pack'), (69471,'spell_gb_heat_drain'), (69488,'spell_gb_overheat_drain'), + (69402,'spell_gb_incinerating_blast'), (70175,'spell_gb_incinerating_blast'), (71335,'spell_gb_burning_pitch'), (71339,'spell_gb_burning_pitch'), + (69399,'spell_cannon_blast'), (70172,'spell_cannon_blast'); +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` IN (69400, 70173, 69402, 70175, 70374, 70383, 72959); +INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`) VALUES + (13, 69400, 18, 1, 37540), (13, 70173, 18, 1, 37215), (13, 69402, 18, 1, 37540), (13, 70175, 18, 1, 37215), + (13, 70374, 18, 1, 37540), (13, 70383, 18, 1, 37215), (13, 72959, 18, 1, 0); +-- 201812, 201581, 201811, 201580 DELETE? = INVISIBLE SHIP! +DELETE FROM `transports` WHERE `entry` IN (201580, 201581, 201811, 201812); +DELETE FROM `creature` WHERE `id` IN (37230, 36838, 36839, 36948, 36939); +DELETE FROM `creature_template_addon` WHERE (`entry` = 37547); +UPDATE `creature_template` SET `flags_extra` = 130 WHERE `entry` = 37547; +UPDATE `creature_template` SET `exp` = 2,`speed_run` = 0,`VehicleId` = 554,`RegenHealth` = 0,`npcflag` = 16777216,`spell1` = 69399,`spell2` = 69401 WHERE entry IN (36839, +-- for prevent error + 35427); +UPDATE `creature_template` SET `exp` = 2,`speed_run` = 0,`VehicleId` = 554,`RegenHealth` = 0,`npcflag` = 16777216,`spell1` = 70172,`spell2` = 70174 WHERE entry = 36838; +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (36838, 36839); +INSERT INTO `npc_spellclick_spells`(`npc_entry`,`spell_id`,`quest_start`,`cast_flags`) VALUES +/*(35427, 46598, 0, 1),*/ + (36838, 46598, 0, 1), + (36839, 46598, 0, 1); +DELETE FROM `creature_template_addon` WHERE `entry` IN (36838, 36839); +INSERT INTO `creature_template_addon`(`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES + (36838, 0, 0, 0, 1, 0, 69470), + (36839, 0, 0, 0, 1, 0, 69470); +UPDATE `creature_template` SET `difficulty_entry_1` = 38129,`difficulty_entry_2` = 38701,`difficulty_entry_3` = 38702 WHERE `entry` =37215; +UPDATE `creature_template` SET `faction_A` = 35,`faction_H` = 35,`minlevel` = 83,`maxlevel` = 83,`unit_flags` = 4,`flags_extra` = 2,`modelid1` = 1126,`modelid2` = 11686 WHERE `entry` IN (37215, 38129, 38701, 38702, 37540, 38128, 38699, 38700); +-- Add spell conditions for 69705 (Below Zero) +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` = 69705; +INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES + (13, 0, 69705, 0, 18, 1, 36838, 0, 0,'','Gunship Battle - Spell 69705 (Below Zero) target creature 36838'), + (13, 0, 69705, 0, 18, 1, 36839, 0, 0,'','Gunship Battle - Spell 69705 (Below Zero) target creature 36839'); +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 71193 AND `spell_effect` = -71188; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 71195 AND `spell_effect` = -71193; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 68645 AND `spell_effect` = 69193; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 73077 AND `spell_effect` IN (68721, 69188); +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 69193 AND `spell_effect` = 69192; +INSERT INTO `spell_linked_spell`(`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES + (71193, -71188, 0,'Gunship Battle - Veteran removes Experimented'), + (71195, -71193, 0,'Gunship Battle - Elite removes Veteran'), + (73077, 69188, 2,'Gunship Battle - Fix visual for Rocket Pack'), + (68645, 69193, 0,'Gunship Battle - Fix visual for Rocket Pack'), + (69193, 69192, 0,'Gunship Battle - Cast Rocket Burst when landing with Rocket Pack'); +-- Battle Standards Spells +UPDATE `creature_template` SET `unit_flags` = 33554564,`flags_extra` = 2,`AIName` = 'SmartAI' WHERE `entry` IN (37044, 37041); +UPDATE `creature_template` SET `faction_A` = 1801,`faction_H` = 1801 WHERE `entry` = 37044; +UPDATE `creature_template` SET `faction_A` = 1802,`faction_H` = 1802 WHERE `entry` = 37041; +DELETE FROM `creature_template_addon` WHERE `entry` IN (37044, 37041); +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` IN (37044, 37041); +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 +-- NPC: Kor'kron Battle Standard, http://old.wowhead.com/npc=37044 + (37044, 0, 0, 0, 25, 0, 100, 1, 0, 0, 0, 0, 11, 69809, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,'Kor''kron Battle Standard - On spawn & reset - Cast spell 69809'), +-- NPC: Skybreaker Battle Standard, http://old.wowhead.com/npc=37041 + (37041, 0, 0, 0, 25, 0, 100, 1, 0, 0, 0, 0, 11, 69808, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,'Skybreaker Battle Standard - On spawn & reset - Cast spell 69808'); +DELETE FROM `creature_text` WHERE `entry` IN (36948, 36939, 37030, 37033, 37032, 37003, 37026, 36998, 37230, 50004, 50006); +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES + (50004, 1, 0,'Reavers, Sergeants, attack!.', 14, 0, 0, 0, 0, 17081,''), + (50004, 0, 0,'This is not your battle, dwarf. Back down or we will be forced to destroy your ship.', 14, 0, 0, 0, 0, 17093,''), + (50006, 1, 0,'Marines! Sergeants! Attack!', 14, 0, 0, 0, 0, 16956,''), + (50006, 0, 0,'Move yer jalopy or well blow it out of the sky, orc! The Hordes got no business here!', 14, 0, 0, 0, 0, 16969,''), + (36948, 0, 0,'Fire up the engines! We got a meetin'' with destiny, lads!', 14, 0, 100, 0, 0, 16962,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_0'), + (36948, 1, 0,'Hold on to yer hats!', 14, 0, 100, 0, 0, 16963,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_1'), + (36948, 2, 0,'What in the world is that? Grab me spyglass, crewman!', 14, 0, 100, 0, 0, 16964,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_2'), + (36948, 3, 0,'By me own beard! HORDE SAILIN'' IN FAST ''N HOT!', 14, 0, 100, 0, 0, 16965,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_3'), + (36948, 4, 0,'EVASIVE ACTION! MAN THE GUNS!', 14, 0, 100, 0, 0, 16966,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_4'), + (36948, 5, 0,'Cowardly dogs! Ye blindsided us!', 14, 0, 100, 0, 0, 16967,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_5'), + (36948, 6, 0,'Not me battle? I dunnae who ye? think ye are, mister, but I got a score to settle with Arthas and yer not gettin'' in me way! FIRE ALL GUNS! FIRE! FIRE!', 14, 0, 100, 0, 0, 16968,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_7'), + (36948, 7, 0,'Move yer jalopy or we''ll blow it out of the sky, orc! The Horde''s got no business here!', 14, 0, 100, 0, 0, 16969,'Muradin Bronzebeard - SAY_INTRO_HORDE_3'), + (36948, 8, 0,'What''s this then?! Ye won''t be takin'' this son o'' Ironforge''s vessel without a fight!.', 14, 0, 100, 0, 0, 16958,'Muradin Bronzebeard - SAY_BOARDING_SKYBREAKER_1'), + (36948, 9, 0,'Marines, Sergeants, attack!', 14, 0, 100, 0, 0, 16956,'Muradin Bronzebeard - SAY_BOARDING_ORGRIMS_HAMMER_0'), + (36948, 10, 0,'Riflemen, shoot faster!', 14, 0, 100, 0, 0, 16954,'Muradin Bronzebeard - SAY_NEW_RIFLEMEN_SPAWNED'), + (36948, 11, 0,'Mortar team, reload!', 14, 0, 100, 0, 0, 16955,'Muradin Bronzebeard - SAY_NEW_MORTAR_TEAM_SPAWNED'), + (36948, 12, 0,'We''re taking hull damage, get a sorcerer out here to shut down those cannons!', 14, 0, 100, 0, 0, 16957,'Muradin Bronzebeard - SAY_NEW_MAGE_SPAWNED'), + (36948, 13, 0,'Don''t say I didn''t warn ya, scoundrels! Onward, brothers and sisters!', 14, 0, 100, 0, 0, 16959,'Muradin Bronzebeard - SAY_ALLIANCE_VICTORY'), + (36948, 14, 0,'Captain Bartlett, get us out of here! We''re taken too much damage to stay afloat!', 14, 0, 100, 0, 0, 16960,'Muradin Bronzebeard - SAY_ALLIANCE_DEFEAT'), + (36939, 0, 0,'Rise up, sons and daughters of the Horde! Today we battle a hated enemy of the Horde! LOK''TAR OGAR!', 14, 0, 100, 0, 0, 17087,'High Overlord Saurfang - SAY_INTRO_HORDE_0'), + (36939, 1, 0,'Kor''kron, take us out!', 14, 0, 100, 0, 0, 17088,'High Overlord Saurfang - SAY_INTRO_HORDE_1_1'), + (36939, 2, 0,'What is that?! Something approaching in the distance!', 14, 0, 100, 0, 0, 17089,'High Overlord Saurfang - SAY_INTRO_HORDE_1'), + (36939, 3, 0,'ALLIANCE GUNSHIP! ALL HANDS ON DECK!', 14, 0, 100, 0, 0, 17090,'High Overlord Saurfang - SAY_INTRO_HORDE_2'), + (36939, 4, 0,'You will know our business soon! KOR''KRON, ANNIHILATE THEM!', 14, 0, 100, 0, 0, 17092,'High Overlord Saurfang - SAY_INTRO_HORDE_4'), + (36939, 5, 0,'Reavers, Sergeants, attack!', 14, 0, 100, 0, 0, 17081,'High Overlord Saurfang - SAY_BOARDING_SKYBREAKER_0'), + (36939, 6, 0,'You DARE board my ship? Your death will come swiftly.', 14, 0, 100, 0, 0, 17083,'High Overlord Saurfang - SAY_BOARDING_ORGRIMS_HAMMER_1'), + (36939, 7, 0,'Axethrowers, hurl faster!', 14, 0, 100, 0, 0, 17079,'High Overlord Saurfang - SAY_NEW_AXETHROWER_SPAWNED'), + (36939, 8, 0,'Rocketeers, reload!', 14, 0, 100, 0, 0, 17080,'High Overlord Saurfang - SAY_NEW_ROCKETEERS_SPAWNED'), + (36939, 9, 0,'We''re taking hull damage, get a battle-mage out here to shut down those cannons!', 14, 0, 100, 0, 0, 17082,'High Overlord Saurfang - SAY_NEW_BATTLE_MAGE_SPAWNED'), + (36939, 10, 0,'The Alliance falter. Onward to the Lich King!', 14, 0, 100, 0, 0, 17084,'High Overlord Saurfang - SAY_HORDE_VICTORY'), + (36939, 11, 0,'Damage control! Put those fires out! You haven''t seen the last of the Horde!', 14, 0, 100, 0, 0, 17085,'High Overlord Saurfang - SAY_HORDE_DEFEAT'), + (36939, 12, 0,'This is not your battle, dwarf. Back down or we will be forced to destroy your ship.', 14, 0, 100, 0, 0, 17093,'High Overlord Saurfang - SAY_INTRO_ALLIANCE_6'), + (37030, 0, 0,'Thank the spirits for you, brothers and sisters. The Skybreaker has already left. Quickly now, to Orgrim''s Hammer! If you leave soon, you may be able to catch them.', 12, 0, 100, 0, 0, 0,'Kor''kron Primalist - SAY_FIRST_SQUAD_RESCUED_HORDE_0'), + (37033, 0, 0,'This should be helpin''ya!', 12, 0, 100, 0, 0, 0,'Kor''kron Invoker - SAY_FIRST_SQUAD_RESCUED_HORDE_1'), + (37033, 1, 0,'%s summons a Kor''kron Battle Standard.', 16, 0, 100, 0, 0, 0,'Kor''kron Invoker - SAY_SUMMON_BATTLE_STANDARD'), + (37032, 0, 0,'Aka''Magosh, brave warriors. The alliance is in great number here.', 12, 0, 100, 0, 0, 0,'Kor''kron Defender - SAY_SECOND_SQUAD_RESCUED_HORDE_0'), + (37032, 1, 0,'Captain Saurfang will be pleased to see you aboard Orgrim''s Hammer. Make haste, we will secure the area until you are ready for take-off.', 12, 0, 100, 0, 0, 0,'Kor''kron Defender - SAY_SECOND_SQUAD_RESCUED_HORDE_1'), + (37032, 2, 0,'A screeching cry pierces the air above!', 41, 0, 100, 0, 0, 0,'Frostwyrm - SAY_FROSTWYRM_SUMMON_0'), + (37003, 0, 0,'Thank goodness you arrived when you did, heroes. Orgrim''s Hammer has already left. Quickly now, to The Skybreaker! If you leave soon, you may be able to catch them.', 12, 0, 100, 0, 0, 0,'Skybreaker Vindicator - SAY_FIRST_SQUAD_RESCUED_ALLIANCE_0'), + (37026, 0, 0,'This ought to help!', 12, 0, 100, 0, 0, 0,'Skybreaker Sorcerer - SAY_FIRST_SQUAD_RESCUED_ALLIANCE_1'), + (37026, 1, 0,'%s summons a Skybreaker Battle Standard.', 16, 0, 100, 0, 0, 0,'Skybreaker Sorcerer - SAY_SUMMON_BATTLE_STANDARD'), + (36998, 0, 0,'You have my thanks. We were outnumbered until you arrived.', 12, 0, 100, 0, 0, 0,'Skybreaker Protector - SAY_SECOND_SQUAD_RESCUED_ALLIANCE_0'), + (36998, 1, 0,'Captain Muradin is waiting aboard The Skybreaker. We''ll secure the area until you are ready for take off.', 12, 0, 100, 0, 0, 0,'Skybreaker Protector - SAY_SECOND_SQUAD_RESCUED_ALLIANCE_1'), + (36998, 2, 0,'Skybreaker infantry, hold position!', 12, 0, 100, 0, 0, 0,'Skybreaker Protector - SAY_SECOND_SQUAD_RESCUED_ALLIANCE_2'), + (36998, 3, 0,'A screeching cry pierces the air above!', 41, 0, 100, 0, 0, 0,'Frostwyrm - SAY_FROSTWYRM_SUMMON_0'), + (37230, 0, 0,'A Spire Frostwyrm lands just before Orgrim''s Hammer.', 16, 0, 100, 0, 0, 0,'Frostwyrm - SAY_FROSTWYRM_LAND_H_1'), + (37230, 1, 0,'A Spire Frostwyrm lands just before The Skybreaker. ', 16, 0, 100, 0, 0, 0,'Frostwyrm - SAY_FROSTWYRM_LAND_A_2'); +DELETE FROM `gameobject_loot_template` WHERE `entry` IN (201872, 201873, 201874, 201875); +INSERT INTO `gameobject_loot_template` VALUES + (201872, 49426, 100, 1, 0, 2, 2), (201872, 50340, 0, 1, 1, 1, 1), (201872, 50787, 0, 1, 1, 1, 1), (201872, 50788, 0, 1, 1, 1, 1), + (201872, 50789, 0, 1, 2, 1, 1), (201872, 50790, 0, 1, 2, 1, 1), (201872, 50791, 0, 1, 1, 1, 1), (201872, 50792, 0, 1, 2, 1, 1), + (201872, 50793, 0, 1, 1, 1, 1), (201872, 50794, 0, 1, 1, 1, 1), (201872, 50795, 0, 1, 2, 1, 1), (201872, 50796, 0, 1, 2, 1, 1), + (201872, 50797, 0, 1, 2, 1, 1), (201873, 49426, 100, 1, 0, 2, 2), (201873, 49908, 10, 1, 0, 1, 1), (201873, 49998, 0, 1, 1, 1, 1), + (201873, 49999, 0, 1, 2, 1, 1), (201873, 50000, 0, 1, 2, 1, 1), (201873, 50001, 0, 1, 3, 1, 1), (201873, 50002, 0, 1, 2, 1, 1), + (201873, 50003, 0, 1, 3, 1, 1), (201873, 50005, 0, 1, 1, 1, 1), (201873, 50006, 0, 1, 3, 1, 1), (201873, 50008, 0, 1, 1, 1, 1), + (201873, 50009, 0, 1, 3, 1, 1), (201873, 50010, 0, 1, 2, 1, 1), (201873, 50011, 0, 1, 1, 1, 1), (201873, 50274, 37.5, 1, 0, 1, 1), + (201873, 50352, 0, 1, 1, 1, 1), (201873, 50359, 0, 1, 2, 1, 1), (201873, 50411, 0, 1, 3, 1, 1), (201874, 49426, 100, 1, 0, 2, 2), + (201874, 49908, 10, 1, 0, 1, 1), (201874, 50345, 0, 1, 2, 1, 1), (201874, 51906, 0, 1, 1, 1, 1), (201874, 51907, 0, 1, 1, 1, 1), + (201874, 51908, 0, 1, 1, 1, 1), (201874, 51909, 0, 1, 2, 1, 1), (201874, 51910, 0, 1, 2, 1, 1), (201874, 51911, 0, 1, 2, 1, 1), + (201874, 51912, 0, 1, 2, 1, 1), (201874, 51913, 0, 1, 1, 1, 1), (201874, 51914, 0, 1, 2, 1, 1), (201874, 51915, 0, 1, 1, 1, 1), + (201874, 51916, 0, 1, 1, 1, 1), (201875, 49426, 100, 1, 0, 2, 2), (201875, 49908, 10, 1, 0, 1, 1), (201875, 50274, 75, 1, 0, 1, 1), + (201875, 50349, 0, 1, 2, 1, 1), (201875, 50366, 0, 1, 1, 1, 1), (201875, 50653, 0, 1, 3, 1, 1), (201875, 50654, 0, 1, 3, 1, 1), + (201875, 50655, 0, 1, 3, 1, 1), (201875, 50656, 0, 1, 2, 1, 1), (201875, 50657, 0, 1, 3, 1, 1), (201875, 50658, 0, 1, 1, 1, 1), + (201875, 50659, 0, 1, 2, 1, 1), (201875, 50660, 0, 1, 1, 1, 1), (201875, 50661, 0, 1, 1, 1, 1), (201875, 50663, 0, 1, 2, 1, 1), + (201875, 50664, 0, 1, 2, 1, 1), (201875, 50665, 0, 1, 1, 1, 1), (201875, 50667, 0, 1, 3, 1, 1); +UPDATE `gameobject_template` SET `data1` = 201872 WHERE `entry` IN (201872, 202177); +UPDATE `gameobject_template` SET `data1` = 201873 WHERE `entry` IN (201873, 202178); +UPDATE `gameobject_template` SET `data1` = 201874 WHERE `entry` IN (201874, 202179); +UPDATE `gameobject_template` SET `data1` = 201875 WHERE `entry` IN (201875, 202180); +UPDATE item_template SET ScriptName = 'item_icc_rocket_pack' WHERE entry = 49278; +UPDATE `creature_template` SET `mindmg` = 595, `maxdmg` = 888 WHERE `entry` IN (36838, 36839); +UPDATE `gameobject_template` SET `flags` = 0,`faction` = 0 + WHERE `entry` IN ( +/* GO_CAPITAN_CHEST_A_10N */ 201872, +/* GO_CAPITAN_CHEST_A_25N */ 201873, +/* GO_CAPITAN_CHEST_A_10H */ 201874, +/* GO_CAPITAN_CHEST_A_25H */ 201875, +/* GO_CAPITAN_CHEST_H_10N */ 202177, +/* GO_CAPITAN_CHEST_H_25N */ 202178, +/* GO_CAPITAN_CHEST_H_10H */ 202179, +/* GO_CAPITAN_CHEST_H_25H */ 202180); +-- ------------------------------------------------------------------------- +-- NPC: Volatile Ooze, http://old.wowhead.com/npc=37697 +-- NPC: Little Ooze, http://old.wowhead.com/npc=36897 +-- NPC: Precious, http://old.wowhead.com/npc=37217 +-- NPC: Stinky, http://old.wowhead.com/npc=37025 +UPDATE `creature_template` SET `mechanic_immune_mask` = 667631615 WHERE `entry` IN (36899, 37562, 37697, 36897, 37217, 37025); +-- ------------------------------------------------------------------------- +/*UPDATE `creature_template` SET `ScriptName`='npc_valiant', `dmg_multiplier`=2 WHERE `entry` IN ( +33285, 33306, 33384, 33383, 33382, 33739, 33749, 33745, 33744, 33748, +33740, 33743, 33747, 33738, 33746, 33561, 33558, 33559, 33562); + +DELETE FROM `creature_template` WHERE (`entry`=50004); +INSERT INTO `creature_template`(`entry`,`difficulty_entry_1`,`difficulty_entry_2`,`difficulty_entry_3`,`KillCredit1`,`KillCredit2`,`modelid1`,`modelid2`,`modelid3`,`modelid4`,`name`,`subname`,`IconName`,`gossip_menu_id`,`minlevel`,`maxlevel`,`exp`,`faction_A`,`faction_H`,`npcflag`,`speed_walk`,`speed_run`,`scale`,`rank`,`mindmg`,`maxdmg`,`dmgschool`,`attackpower`,`dmg_multiplier`,`baseattacktime`,`rangeattacktime`,`unit_class`,`unit_flags`,`dynamicflags`,`family`,`trainer_type`,`trainer_spell`,`trainer_class`,`trainer_race`,`minrangedmg`,`maxrangedmg`,`rangedattackpower`,`type`,`type_flags`,`lootid`,`pickpocketloot`,`skinloot`,`resistance1`,`resistance2`,`resistance3`,`resistance4`,`resistance5`,`resistance6`,`spell1`,`spell2`,`spell3`,`spell4`,`spell5`,`spell6`,`spell7`,`spell8`,`PetSpellDataId`,`VehicleId`,`mingold`,`maxgold`,`AIName`,`MovementType`,`InhabitType`,`Health_mod`,`Mana_mod`,`Armor_mod`,`RacialLeader`,`questItem1`,`questItem2`,`questItem3`,`questItem4`,`questItem5`,`questItem6`,`movementId`,`RegenHealth`,`equipment_id`,`mechanic_immune_mask`,`flags_extra`,`ScriptName`,`WDBVerified`) VALUES +(50004, 0, 0, 0, 0, 0, 11686, 0, 0, 0,'High Overlord Saurfang','','', 0, 80, 80, 3, 1802, 1802, 0, 0, 0, 1, 1, 252, 357, 0, 304, 7.5, 2000, 0, 1, 33554432, 8, 0, 0, 0, 0, 0, 215, 320, 44, 7, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'', 0, 3, 1000, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,'', 12340); + +DELETE FROM `creature_template` WHERE (`entry`=50006); +INSERT INTO `creature_template`(`entry`,`difficulty_entry_1`,`difficulty_entry_2`,`difficulty_entry_3`,`KillCredit1`,`KillCredit2`,`modelid1`,`modelid2`,`modelid3`,`modelid4`,`name`,`subname`,`IconName`,`gossip_menu_id`,`minlevel`,`maxlevel`,`exp`,`faction_A`,`faction_H`,`npcflag`,`speed_walk`,`speed_run`,`scale`,`rank`,`mindmg`,`maxdmg`,`dmgschool`,`attackpower`,`dmg_multiplier`,`baseattacktime`,`rangeattacktime`,`unit_class`,`unit_flags`,`dynamicflags`,`family`,`trainer_type`,`trainer_spell`,`trainer_class`,`trainer_race`,`minrangedmg`,`maxrangedmg`,`rangedattackpower`,`type`,`type_flags`,`lootid`,`pickpocketloot`,`skinloot`,`resistance1`,`resistance2`,`resistance3`,`resistance4`,`resistance5`,`resistance6`,`spell1`,`spell2`,`spell3`,`spell4`,`spell5`,`spell6`,`spell7`,`spell8`,`PetSpellDataId`,`VehicleId`,`mingold`,`maxgold`,`AIName`,`MovementType`,`InhabitType`,`Health_mod`,`Mana_mod`,`Armor_mod`,`RacialLeader`,`questItem1`,`questItem2`,`questItem3`,`questItem4`,`questItem5`,`questItem6`,`movementId`,`RegenHealth`,`equipment_id`,`mechanic_immune_mask`,`flags_extra`,`ScriptName`,`WDBVerified`) VALUES +(50006, 0, 0, 0, 0, 0, 11686, 0, 0, 0,'Muradin Bronzebeard','','', 10875, 83, 83, 2, 1802, 1802, 1, 1, 1.14286, 1, 1, 468, 702, 0, 175, 47.2, 2000, 2000, 1, 33554432, 8, 0, 0, 0, 0, 0, 374, 562, 140, 7, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15284, 70309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'', 0, 3, 175, 1, 1, 0, 0, 0, 0, 0, 0, 0, 164, 1, 0, 0, 0,'', 12340); +*/ +UPDATE `creature_template` SET `flags_extra` = 2 WHERE `entry` IN (50004, 50006); + +UPDATE `creature_template` SET `npcflag` = 1 WHERE `entry` IN (36939, 38156, 38637, 38638); + +UPDATE `creature_template` SET `faction_A` = 1801, `faction_H` = 1801, `baseattacktime` = 2000, `rangeattacktime` = 2000, `unit_flags` = 32832, `spell1` = 71339, `spell2` = 70161, `spell3` = 72539, `mechanic_immune_mask` = 73745 WHERE `entry` IN (36968, 38403, 38675, 38676); +UPDATE `creature_template` SET `faction_A` = 1802, `faction_H` = 1802, `baseattacktime` = 2000, `rangeattacktime` = 2000, `unit_flags` = 32832, `spell1` = 71335, `spell2` = 70162, `spell3` = 72566, `mechanic_immune_mask` = 73745 WHERE `entry` IN (36969, 38408, 38689, 38690); + +-- Spawn fix for TDB GUIDs +DELETE FROM `creature` WHERE `id` IN (37003, 37026); +INSERT INTO `creature`(`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES +(200988, 37003, 631, 15, 1, 0, 0, -562.385, 2217.58, 199.969, 3.46228, 86400, 0, 0, 398434, 41690, 0, 0, 0, 0), +(201020, 37026, 631, 15, 1, 0, 0, -571.091, 2219.71, 199.969, 5.06842, 86400, 0, 0, 269600, 91600, 0, 0, 0, 0); + +UPDATE `creature_template` SET `ScriptName` = 'npc_muradin_gunship' WHERE `entry` = 36948; +UPDATE `creature_template` SET `ScriptName` = 'npc_saurfang_gunship' WHERE `entry` = 36939; +UPDATE `creature_template` SET `ScriptName` = 'npc_zafod_boombox' WHERE `entry` = 37184; +UPDATE `creature_template` SET `ScriptName` = 'npc_korkron_defender' WHERE `entry` = 37032; +UPDATE `creature_template` SET `ScriptName` = 'npc_korkron_primalist' WHERE `entry` = 37030; +UPDATE `creature_template` SET `ScriptName` = 'npc_skybreaker_vindicator' WHERE `entry` = 37003; +UPDATE `creature_template` SET `ScriptName` = 'npc_skybreaker_protector' WHERE `entry` = 36998; +UPDATE `creature_template` SET `ScriptName` = 'npc_icc_spire_frostwyrm' WHERE `entry` = 37230; +UPDATE `creature_template` SET `ScriptName` = 'npc_korkron_axethrower_rifleman' WHERE `entry` = 36968; +UPDATE `creature_template` SET `ScriptName` = 'npc_korkron_axethrower_rifleman' WHERE `entry` = 36969; +UPDATE `creature_template` SET `ScriptName` = 'npc_mortar_soldier_or_rocketeer', AIName = '' WHERE `entry` = 36982; +UPDATE `creature_template` SET `ScriptName` = 'npc_mortar_soldier_or_rocketeer', AIName = '' WHERE `entry` = 36978; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_mage' WHERE `entry` = 37117; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_mage' WHERE `entry` = 37116; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_trigger' WHERE `entry` = 37547; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_portal' WHERE `entry` = 37227; +UPDATE `creature_template` SET `ScriptName` = 'npc_marine_or_reaver' WHERE `entry` = 36957; +UPDATE `creature_template` SET `ScriptName` = 'npc_marine_or_reaver' WHERE `entry` = 36950; +UPDATE `creature_template` SET `ScriptName` = 'npc_sergeant' WHERE `entry` = 36960; +UPDATE `creature_template` SET `ScriptName` = 'npc_sergeant' WHERE `entry` = 36961; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_skybreaker' WHERE `entry` = 37540; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_orgrimmar' WHERE `entry` = 37215; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_cannon' WHERE `entry` = 36838; +UPDATE `creature_template` SET `ScriptName` = 'npc_gunship_cannon' WHERE `entry` = 36839; +UPDATE `gameobject_template` SET `ScriptName` = 'transport_gunship' WHERE `entry` IN (201580, 201812); + +DELETE FROM `areatrigger_scripts` WHERE `entry` IN (5630, 5628); +INSERT INTO `areatrigger_scripts`(`entry`,`ScriptName`) VALUES +(5628,'at_icc_land_frostwyrm'), +(5630,'at_icc_land_frostwyrm'); + +-- SpellScripts +DELETE FROM `spell_script_names` WHERE `spell_id` IN (70713, 68645, 69471, 69488, 69402, 70175, 71335, 71339); +INSERT INTO `spell_script_names`(`spell_id`,`ScriptName`) VALUES + (70713,'spell_icc_remove_rocket_pack'), + (68645,'spell_rocket_pack'), + (69471,'spell_gb_heat_drain'), + (69488,'spell_gb_overheat_drain'), + (69402,'spell_gb_incinerating_blast'), + (70175,'spell_gb_incinerating_blast'), + (71335,'spell_gb_burning_pitch'), + (71339,'spell_gb_burning_pitch'); + +SET @ENTRYA := 37540; +SET @ENTRYH := 37215; +SET @ENTRYA10H := 38128; +SET @ENTRYH10H := 38129; +SET @ENTRYA25 := 38699; +SET @ENTRYH25 := 38701; +SET @ENTRYA25H := 38700; +SET @ENTRYH25H := 38702; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (69400, 70173, 69402, 70175, 70374, 70383, 72959, 69705); +INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`) VALUES +(13, 69400, 18, 1, @ENTRYA), -- Horde Cannon (Cannon Blast) set to hit only Skybreaker (effect 2) +(13, 69400, 18, 1, @ENTRYA10H), -- Horde Cannon (Cannon Blast) set to hit only Skybreaker - 10H (effect 2) +(13, 69400, 18, 1, @ENTRYA25), -- Horde Cannon (Cannon Blast) set to hit only Skybreaker - 25Normal (effect 2) +(13, 69400, 18, 1, @ENTRYA25H), -- Horde Cannon (Cannon Blast) set to hit only Skybreaker -- 25H (effect 2) +(13, 70173, 18, 1, @ENTRYH), -- Alliance Cannon (Cannon Blast) set to hit only Orgrimms Hammer (effect 2) +(13, 70173, 18, 1, @ENTRYH10H), -- Alliance Cannon (Cannon Blast) set to hit only Orgrimms Hammer 10H (effect 2) +(13, 70173, 18, 1, @ENTRYH25), -- Alliance Cannon (Cannon Blast) set to hit only Orgrimms Hammer - 25Normal (effect 2) +(13, 70173, 18, 1, @ENTRYH25H), -- Alliance Cannon (Cannon Blast) set to hit only Orgrimms Hammer -- 25H (effect 2) +(13, 69402, 18, 1, @ENTRYA), -- Horde Cannon (Incinerating Blast) set to hit only Skybreaker (effect 2) +(13, 69402, 18, 1, @ENTRYA10H), -- Horde Cannon (Incinerating Blast) set to hit only Skybreaker 10H(effect 2) +(13, 69402, 18, 1, @ENTRYA25), -- Horde Cannon (Incinerating Blast) set to hit only Skybreaker - 25Normal (effect 2) +(13, 69402, 18, 1, @ENTRYA25H), -- Horde Cannon (Incinerating Blast) set to hit only Skybreaker -- 25H (effect 2) +(13, 70175, 18, 1, @ENTRYH), -- Alliance Cannon (Incinerating Blast) set to hit only Orgrimms Hammer (effect 2) +(13, 70175, 18, 1, @ENTRYH10H), -- Alliance Cannon (Incinerating Blast) set to hit only Orgrimms Hammer 10H (effect 2) +(13, 70175, 18, 1, @ENTRYH25), -- Alliance Cannon (Incinerating Blast) set to hit only Orgrimms Hammer - 25Normal (effect 2) +(13, 70175, 18, 1, @ENTRYH25H), -- Alliance Cannon (Incinerating Blast) set to hit only Orgrimms Hammer -- 25H (effect 2) +(13, 70374, 18, 1, @ENTRYA), -- Burning Pitch +(13, 70374, 18, 1, @ENTRYA10H), -- Burning Pitch +(13, 70374, 18, 1, @ENTRYA25), -- Burning Pitch +(13, 70374, 18, 1, @ENTRYA25H), -- Burning Pitch +(13, 70383, 18, 1, @ENTRYH), -- Burning Pitch +(13, 70383, 18, 1, @ENTRYH10H), -- Burning Pitch +(13, 70383, 18, 1, @ENTRYH25), -- Burning Pitch +(13, 70383, 18, 1, @ENTRYH25H), -- Burning Pitch +(13, 72959, 18, 1, 0), -- Achievement (Radius: 50000 yards) +(13, 69705 , 18, 1, 36838), -- Gunship Battle - Spell 69705 (Below Zero) target creature 36838 +(13, 69705 , 18, 1, 36839); -- Gunship Battle - Spell 69705 (Below Zero) target creature 36839 + +DELETE FROM transports WHERE entry IN (201580, 201581, 201811, 201812); +DELETE FROM creature WHERE id IN (37230, 36838, 36839, 36948, 36939); +DELETE FROM `creature_template_addon` WHERE (`entry`=37547); +UPDATE `creature_template` SET `flags_extra` = 130 WHERE `entry` = 37547; + +UPDATE `creature_template` SET `exp` = 2, `VehicleId` = 554, `RegenHealth` = 0, `npcflag` = 16777216, `spell1` = 69399, `spell2` = 69401 WHERE entry = 36839; +UPDATE `creature_template` SET `exp` = 2, `VehicleId` = 554, `RegenHealth` = 0, `npcflag` = 16777216, `spell1` = 70172, `spell2` = 70174 WHERE entry = 36838; +REPLACE INTO `npc_spellclick_spells` (`npc_entry`,`spell_id`,`cast_flags`,`user_type`,`quest_start`) VALUES +(36838, 46598, 0, 1, 0), +(36839, 46598, 0, 1, 0); + +DELETE FROM `creature_template_addon` WHERE `entry` IN (36838, 36839); +INSERT INTO `creature_template_addon`(`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES +(36838, 0, 0, 0, 1, 0, 69470), +(36839, 0, 0, 0, 1, 0, 69470); + +UPDATE `creature_template` SET `difficulty_entry_1` = 38129,`difficulty_entry_2` = 38701, `difficulty_entry_3` = 38702 WHERE `entry` =37215; +UPDATE `creature_template` SET `faction_A` = 35, `faction_H` = 35, `minlevel` = 83, `maxlevel` = 83, `unit_flags` = 4, `flags_extra` = 2, `modelid1` = 1126, `modelid2` = 11686 WHERE `entry` IN (37215, 38129, 38701, 38702, 37540, 38128, 38699, 38700); + +-- Add spell conditions for 69705 (Below Zero) +SET @SPELL := 69705; +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=@SPELL; +INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(13, 0,@SPELL, 0, 18, 1, 36838, 0, 0,'','Gunship Battle - Spell 69705 (Below Zero) target creature 36838'), +(13, 0,@SPELL, 0, 18, 1, 36839, 0, 0,'','Gunship Battle - Spell 69705 (Below Zero) target creature 36839'); + +-- Linked spells +-- TODO Need more love +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 71193 AND `spell_effect` = -71188; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 71195 AND `spell_effect` = -71193; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 68645 AND `spell_effect` = 69193; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 73077 AND `spell_effect` = 69188; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 73077 AND `spell_effect` = 68721; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 69193 AND `spell_effect` = 69192; +INSERT INTO `spell_linked_spell`(`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES +(71193, -71188, 0,'Gunship Battle - Veteran removes Experimented'), +(71195, -71193, 0,'Gunship Battle - Elite removes Veteran'), +(73077, 69188, 2,'Gunship Battle - Fix visual for Rocket Pack'), +(68645, 69193, 0,'Gunship Battle - Fix visual for Rocket Pack'), +(69193, 69192, 0,'Gunship Battle - Cast Rocket Burst when landing with Rocket Pack'); + +-- Battle Standards Spells +UPDATE `creature_template` SET `unit_flags` = 33554564, `flags_extra` = 2 WHERE `entry` IN (37044, 37041); +UPDATE `creature_template` SET `faction_A` = 1801, `faction_H` = 1801 WHERE `entry` = 37044; +UPDATE `creature_template` SET `faction_A` = 1802, `faction_H` = 1802 WHERE `entry` = 37041; +DELETE FROM `creature_template_addon` WHERE `entry` IN (37044, 37041); +SET @KORKRON := 37044; -- Kor'kron Battle Standard +SET @SKYBREAKER := 37041; -- Skybreaker Battle Standard +SET @HSPELL := 69809; +SET @ASPELL := 69808; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (@KORKRON, @SKYBREAKER); +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid` IN (@KORKRON, @SKYBREAKER); +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 +(@KORKRON , 0, 0, 0, 25, 0, 100, 1, 0, 0, 0, 0, 11,@HSPELL, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,'Kor''kron Battle Standard - On spawn & reset - Cast spell 69809'), +(@SKYBREAKER, 0, 0, 0, 25, 0, 100, 1, 0, 0, 0, 0, 11,@ASPELL, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,'Skybreaker Battle Standard - On spawn & reset - Cast spell 69808'); + +REPLACE INTO `creature_text`(`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(50004, 1, 0,'Reavers, Sergeants, attack!.', 14, 0, 0, 0, 0, 17081,''), +(50004, 0, 0,'This is not your battle, dwarf. Back down or we will be forced to destroy your ship.', 14, 0, 0, 0, 0, 17093,''), +(50006, 1, 0,'Marines! Sergeants! Attack!', 14, 0, 0, 0, 0, 16956,''), +(50006, 0, 0,'Move yer jalopy or well blow it out of the sky, orc! The Hordes got no business here!', 14, 0, 0, 0, 0, 16969,''); +-- Texts +SET @MURADIN := 36948; +SET @OVERLORD := 36939; +SET @PRIMALIST := 37030; +SET @INVOKER := 37033; +SET @DEFENDER := 37032; +SET @VINDICATOR := 37003; +SET @SORCERER := 37026; +SET @PROTECTOR := 36998; +SET @FROSTWYRM := 37230; +SET @SOUNDID := 0; +DELETE FROM `creature_text` WHERE `entry` IN (36948, 36939, 37030, 37033, 37032, 37003, 37026, 36998, 37230); +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(@MURADIN, 0, 0,'Fire up the engines! We got a meetin'' with destiny, lads!', 14, 0, 100, 0, 0, 16962,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_0'), +(@MURADIN, 1, 0,'Hold on to yer hats!', 14, 0, 100, 0, 0, 16963,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_1'), +(@MURADIN, 2, 0,'What in the world is that? Grab me spyglass, crewman!', 14, 0, 100, 0, 0, 16964,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_2'), +(@MURADIN, 3, 0,'By me own beard! HORDE SAILIN'' IN FAST ''N HOT!', 14, 0, 100, 0, 0, 16965,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_3'), +(@MURADIN, 4, 0,'EVASIVE ACTION! MAN THE GUNS!', 14, 0, 100, 0, 0, 16966,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_4'), +(@MURADIN, 5, 0,'Cowardly dogs! Ye blindsided us!', 14, 0, 100, 0, 0, 16967,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_5'), +(@MURADIN, 6, 0,'Not me battle? I dunnae who ye? think ye are, mister, but I got a score to settle with Arthas and yer not gettin'' in me way! FIRE ALL GUNS! FIRE! FIRE!', 14, 0, 100, 0, 0, 16968,'Muradin Bronzebeard - SAY_INTRO_ALLIANCE_7'), +(@MURADIN, 7, 0,'Move yer jalopy or we''ll blow it out of the sky, orc! The Horde''s got no business here!', 14, 0, 100, 0, 0, 16969,'Muradin Bronzebeard - SAY_INTRO_HORDE_3'), +(@MURADIN, 8, 0,'What''s this then?! Ye won''t be takin'' this son o'' Ironforge''s vessel without a fight!.', 14, 0, 100, 0, 0, 16958,'Muradin Bronzebeard - SAY_BOARDING_SKYBREAKER_1'), +(@MURADIN, 9, 0,'Marines, Sergeants, attack!', 14, 0, 100, 0, 0, 16956,'Muradin Bronzebeard - SAY_BOARDING_ORGRIMS_HAMMER_0'), +(@MURADIN, 10, 0,'Riflemen, shoot faster!', 14, 0, 100, 0, 0, 16954,'Muradin Bronzebeard - SAY_NEW_RIFLEMEN_SPAWNED'), +(@MURADIN, 11, 0,'Mortar team, reload!', 14, 0, 100, 0, 0, 16955,'Muradin Bronzebeard - SAY_NEW_MORTAR_TEAM_SPAWNED'), +(@MURADIN, 12, 0,'We''re taking hull damage, get a sorcerer out here to shut down those cannons!', 14, 0, 100, 0, 0, 16957,'Muradin Bronzebeard - SAY_NEW_MAGE_SPAWNED'), +(@MURADIN, 13, 0,'Don''t say I didn''t warn ya, scoundrels! Onward, brothers and sisters!', 14, 0, 100, 0, 0, 16959,'Muradin Bronzebeard - SAY_ALLIANCE_VICTORY'), +(@MURADIN, 14, 0,'Captain Bartlett, get us out of here! We''re taken too much damage to stay afloat!', 14, 0, 100, 0, 0, 16960,'Muradin Bronzebeard - SAY_ALLIANCE_DEFEAT'), +(@OVERLORD, 0, 0,'Rise up, sons and daughters of the Horde! Today we battle a hated enemy of the Horde! LOK''TAR OGAR!', 14, 0, 100, 0, 0, 17087,'High Overlord Saurfang - SAY_INTRO_HORDE_0'), +(@OVERLORD, 1, 0,'Kor''kron, take us out!', 14, 0, 100, 0, 0, 17088,'High Overlord Saurfang - SAY_INTRO_HORDE_1_1'), +(@OVERLORD, 2, 0,'What is that?! Something approaching in the distance!', 14, 0, 100, 0, 0, 17089,'High Overlord Saurfang - SAY_INTRO_HORDE_1'), +(@OVERLORD, 3, 0,'ALLIANCE GUNSHIP! ALL HANDS ON DECK!', 14, 0, 100, 0, 0, 17090,'High Overlord Saurfang - SAY_INTRO_HORDE_2'), +(@OVERLORD, 4, 0,'You will know our business soon! KOR''KRON, ANNIHILATE THEM!', 14, 0, 100, 0, 0, 17092,'High Overlord Saurfang - SAY_INTRO_HORDE_4'), +(@OVERLORD, 5, 0,'Reavers, Sergeants, attack!', 14, 0, 100, 0, 0, 17081,'High Overlord Saurfang - SAY_BOARDING_SKYBREAKER_0'), +(@OVERLORD, 6, 0,'You DARE board my ship? Your death will come swiftly.', 14, 0, 100, 0, 0, 17083,'High Overlord Saurfang - SAY_BOARDING_ORGRIMS_HAMMER_1'), +(@OVERLORD, 7, 0,'Axethrowers, hurl faster!', 14, 0, 100, 0, 0, 17079,'High Overlord Saurfang - SAY_NEW_AXETHROWER_SPAWNED'), +(@OVERLORD, 8, 0,'Rocketeers, reload!', 14, 0, 100, 0, 0, 17080,'High Overlord Saurfang - SAY_NEW_ROCKETEERS_SPAWNED'), +(@OVERLORD, 9, 0,'We''re taking hull damage, get a battle-mage out here to shut down those cannons!', 14, 0, 100, 0, 0, 17082,'High Overlord Saurfang - SAY_NEW_BATTLE_MAGE_SPAWNED'), +(@OVERLORD, 10, 0,'The Alliance falter. Onward to the Lich King!', 14, 0, 100, 0, 0, 17084,'High Overlord Saurfang - SAY_HORDE_VICTORY'), +(@OVERLORD, 11, 0,'Damage control! Put those fires out! You haven''t seen the last of the Horde!', 14, 0, 100, 0, 0, 17085,'High Overlord Saurfang - SAY_HORDE_DEFEAT'), +(@OVERLORD, 12, 0,'This is not your battle, dwarf. Back down or we will be forced to destroy your ship.', 14, 0, 100, 0, 0, 17093,'High Overlord Saurfang - SAY_INTRO_ALLIANCE_6'), +(@PRIMALIST, 0, 0,'Thank the spirits for you, brothers and sisters. The Skybreaker has already left. Quickly now, to Orgrim''s Hammer! If you leave soon, you may be able to catch them.', 12, 0, 100, 0, 0, @SOUNDID,'Kor''kron Primalist - SAY_FIRST_SQUAD_RESCUED_HORDE_0'), +(@INVOKER, 0, 0,'This should be helpin''ya!', 12, 0, 100, 0, 0, @SOUNDID,'Kor''kron Invoker - SAY_FIRST_SQUAD_RESCUED_HORDE_1'), +(@INVOKER, 1, 0,'%s summons a Kor''kron Battle Standard.', 16, 0, 100, 0, 0, @SOUNDID,'Kor''kron Invoker - SAY_SUMMON_BATTLE_STANDARD'), +(@DEFENDER, 0, 0,'Aka''Magosh, brave warriors. The alliance is in great number here.', 12, 0, 100, 0, 0, @SOUNDID,'Kor''kron Defender - SAY_SECOND_SQUAD_RESCUED_HORDE_0'), +(@DEFENDER, 1, 0,'Captain Saurfang will be pleased to see you aboard Orgrim''s Hammer. Make haste, we will secure the area until you are ready for take-off.', 12, 0, 100, 0, 0, @SOUNDID,'Kor''kron Defender - SAY_SECOND_SQUAD_RESCUED_HORDE_1'), +(@DEFENDER, 2, 0,'A screeching cry pierces the air above!', 41, 0, 100, 0, 0, @SOUNDID,'Frostwyrm - SAY_FROSTWYRM_SUMMON_0'), +(@VINDICATOR, 0, 0,'Thank goodness you arrived when you did, heroes. Orgrim''s Hammer has already left. Quickly now, to The Skybreaker! If you leave soon, you may be able to catch them.', 12, 0, 100, 0, 0, @SOUNDID,'Skybreaker Vindicator - SAY_FIRST_SQUAD_RESCUED_ALLIANCE_0'), +(@SORCERER, 0, 0,'This ought to help!', 12, 0, 100, 0, 0, @SOUNDID,'Skybreaker Sorcerer - SAY_FIRST_SQUAD_RESCUED_ALLIANCE_1'), +(@SORCERER, 1, 0,'%s summons a Skybreaker Battle Standard.', 16, 0, 100, 0, 0, @SOUNDID,'Skybreaker Sorcerer - SAY_SUMMON_BATTLE_STANDARD'), +(@PROTECTOR, 0, 0,'You have my thanks. We were outnumbered until you arrived.', 12, 0, 100, 0, 0, @SOUNDID,'Skybreaker Protector - SAY_SECOND_SQUAD_RESCUED_ALLIANCE_0'), +(@PROTECTOR, 1, 0,'Captain Muradin is waiting aboard The Skybreaker. We''ll secure the area until you are ready for take off.', 12, 0, 100, 0, 0, @SOUNDID,'Skybreaker Protector - SAY_SECOND_SQUAD_RESCUED_ALLIANCE_1'), +(@PROTECTOR, 2, 0,'Skybreaker infantry, hold position!', 12, 0, 100, 0, 0, @SOUNDID,'Skybreaker Protector - SAY_SECOND_SQUAD_RESCUED_ALLIANCE_2'), +(@PROTECTOR, 3, 0,'A screeching cry pierces the air above!', 41, 0, 100, 0, 0, @SOUNDID,'Frostwyrm - SAY_FROSTWYRM_SUMMON_0'), +(@FROSTWYRM, 0, 0,'A Spire Frostwyrm lands just before Orgrim''s Hammer.', 16, 0, 100, 0, 0, @SOUNDID,'Frostwyrm - SAY_FROSTWYRM_LAND_H_1'), +(@FROSTWYRM, 1, 0,'A Spire Frostwyrm lands just before The Skybreaker. ', 16, 0, 100, 0, 0, @SOUNDID,'Frostwyrm - SAY_FROSTWYRM_LAND_A_2'); + +-- Chests loot +DELETE FROM `gameobject_loot_template` WHERE `entry` = 201872; +INSERT INTO `gameobject_loot_template` VALUES + (201872, 49426, 100, 1, 0, 2, 2), + (201872, 50340, 0, 1, 1, 1, 1), + (201872, 50787, 0, 1, 1, 1, 1), + (201872, 50788, 0, 1, 1, 1, 1), + (201872, 50789, 0, 1, 2, 1, 1), + (201872, 50790, 0, 1, 2, 1, 1), + (201872, 50791, 0, 1, 1, 1, 1), + (201872, 50792, 0, 1, 2, 1, 1), + (201872, 50793, 0, 1, 1, 1, 1), + (201872, 50794, 0, 1, 1, 1, 1), + (201872, 50795, 0, 1, 2, 1, 1), + (201872, 50796, 0, 1, 2, 1, 1), + (201872, 50797, 0, 1, 2, 1, 1); + +DELETE FROM `gameobject_loot_template` WHERE `entry` = 201873; +INSERT INTO `gameobject_loot_template` VALUES + (201873, 49426, 100, 1, 0, 2, 2), + (201873, 49908, 10, 1, 0, 1, 1), + (201873, 49998, 0, 1, 1, 1, 1), + (201873, 49999, 0, 1, 2, 1, 1), + (201873, 50000, 0, 1, 2, 1, 1), + (201873, 50001, 0, 1, 3, 1, 1), + (201873, 50002, 0, 1, 2, 1, 1), + (201873, 50003, 0, 1, 3, 1, 1), + (201873, 50005, 0, 1, 1, 1, 1), + (201873, 50006, 0, 1, 3, 1, 1), + (201873, 50008, 0, 1, 1, 1, 1), + (201873, 50009, 0, 1, 3, 1, 1), + (201873, 50010, 0, 1, 2, 1, 1), + (201873, 50011, 0, 1, 1, 1, 1), + (201873, 50274, 37.5, 1, 0, 1, 1), + (201873, 50352, 0, 1, 1, 1, 1), + (201873, 50359, 0, 1, 2, 1, 1), + (201873, 50411, 0, 1, 3, 1, 1); + +DELETE FROM `gameobject_loot_template` WHERE `entry` = 201874; +INSERT INTO `gameobject_loot_template` VALUES + (201874, 49426, 100, 1, 0, 2, 2), + (201874, 49908, 10, 1, 0, 1, 1), + (201874, 50345, 0, 1, 2, 1, 1), + (201874, 51906, 0, 1, 1, 1, 1), + (201874, 51907, 0, 1, 1, 1, 1), + (201874, 51908, 0, 1, 1, 1, 1), + (201874, 51909, 0, 1, 2, 1, 1), + (201874, 51910, 0, 1, 2, 1, 1), + (201874, 51911, 0, 1, 2, 1, 1), + (201874, 51912, 0, 1, 2, 1, 1), + (201874, 51913, 0, 1, 1, 1, 1), + (201874, 51914, 0, 1, 2, 1, 1), + (201874, 51915, 0, 1, 1, 1, 1), + (201874, 51916, 0, 1, 1, 1, 1); + +DELETE FROM `gameobject_loot_template` WHERE `entry` = 201875; +INSERT INTO `gameobject_loot_template` VALUES + (201875, 49426, 100, 1, 0, 2, 2), + (201875, 49908, 10, 1, 0, 1, 1), + (201875, 50274, 75, 1, 0, 1, 1), + (201875, 50349, 0, 1, 2, 1, 1), + (201875, 50366, 0, 1, 1, 1, 1), + (201875, 50653, 0, 1, 3, 1, 1), + (201875, 50654, 0, 1, 3, 1, 1), + (201875, 50655, 0, 1, 3, 1, 1), + (201875, 50656, 0, 1, 2, 1, 1), + (201875, 50657, 0, 1, 3, 1, 1), + (201875, 50658, 0, 1, 1, 1, 1), + (201875, 50659, 0, 1, 2, 1, 1), + (201875, 50660, 0, 1, 1, 1, 1), + (201875, 50661, 0, 1, 1, 1, 1), + (201875, 50663, 0, 1, 2, 1, 1), + (201875, 50664, 0, 1, 2, 1, 1), + (201875, 50665, 0, 1, 1, 1, 1), + (201875, 50667, 0, 1, 3, 1, 1); + +UPDATE `gameobject_template` SET `data1` = 201872 WHERE `entry` = 201872; +UPDATE `gameobject_template` SET `data1` = 201873 WHERE `entry` = 201873; +UPDATE `gameobject_template` SET `data1` = 201874 WHERE `entry` = 201874; +UPDATE `gameobject_template` SET `data1` = 201875 WHERE `entry` = 201875; +UPDATE `gameobject_template` SET `data1` = 201872 WHERE `entry` = 202177; +UPDATE `gameobject_template` SET `data1` = 201873 WHERE `entry` = 202178; +UPDATE `gameobject_template` SET `data1` = 201874 WHERE `entry` = 202179; +UPDATE `gameobject_template` SET `data1` = 201875 WHERE `entry` = 202180; + +UPDATE item_template SET ScriptName = 'item_icc_rocket_pack' WHERE entry = 49278; + +SET @Gunship10N := 28057; -- Data1 for 201872 & 202177 +SET @Gunship10H := 28045; -- Data1 for 201873 & 202178 +SET @Gunship25N := 28072; -- Data1 for 201874 & 202179 +SET @Gunship25H := 28090; -- Data1 for 201875 & 202180 +SET @emblem := 49426; -- Emblem of Frost +SET @SfShard := 50274; -- Shadowfrost Shard +SET @PriSar := 49908; -- Primordial Saronite +-- Dug up the old references i created for UP34: +SET @Ref10J := 34329; +SET @Ref25J := 34251; +SET @RefJ10H := 34263; +SET @RefJ25H := 34275; + +-- Gunship_Armory10N_reference +DELETE FROM `reference_loot_template` WHERE `entry` IN (@Ref10J,@Ref25J,@RefJ10H,@RefJ25H); +INSERT INTO `reference_loot_template`(`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES + (@Ref10J, 50791, 0, 1, 1, 1, 1), -- Saronite Gargoyle Cloak + (@Ref10J, 50795, 0, 1, 1, 1, 1), -- Cord of Dark Suffering + (@Ref10J, 50794, 0, 1, 1, 1, 1), -- Neverending Winter + (@Ref10J, 50787, 0, 1, 1, 1, 1), -- Frost Giant's Cleaver + (@Ref10J, 50793, 0, 1, 1, 1, 1), -- Midnight + (@Ref10J, 50788, 0, 1, 1, 1, 1), -- Bone Drake's Enameled Boots + (@Ref10J, 50792, 0, 1, 1, 1, 1), -- Pauldrons of Lost Hope + (@Ref10J, 50340, 0, 1, 1, 1, 1), -- Muradin's Spyglass + (@Ref10J, 50797, 0, 1, 1, 1, 1), -- Ice-Reinforced Vrykul Helm + (@Ref10J, 50790, 0, 1, 1, 1, 1), -- Abomination's Bloody Ring + (@Ref10J, 50789, 0, 1, 1, 1, 1), -- Icecrown Rampart Bracers + (@Ref10J, 50796, 0, 1, 1, 1, 1), -- Bracers of Pale Illumination +-- Gunship_Armory25N_reference + (@Ref25J, 50011, 0, 1, 1, 1, 1), -- Gunship Captain's Mittens + (@Ref25J, 50002, 0, 1, 1, 1, 1), -- Polar Bear Claw Bracers + (@Ref25J, 50006, 0, 1, 1, 1, 1), -- Corp'rethar Ceremonial Crown + (@Ref25J, 50010, 0, 1, 1, 1, 1), -- Waistband of Righteous Fury + (@Ref25J, 50003, 0, 1, 1, 1, 1), -- Boneguard Commander's Pauldrons + (@Ref25J, 50000, 0, 1, 1, 1, 1), -- Scourge Hunter's Vambraces + (@Ref25J, 50359, 0, 1, 1, 1, 1), -- Althor's Abacus + (@Ref25J, 50352, 0, 1, 1, 1, 1), -- Corpse Tongue Coin + (@Ref25J, 49999, 0, 1, 1, 1, 1), -- Skeleton Lord's Circle + (@Ref25J, 50009, 0, 1, 1, 1, 1), -- Boots of Unnatural Growth + (@Ref25J, 50008, 0, 1, 1, 1, 1), -- Ring of Rapid Ascent + (@Ref25J, 49998, 0, 1, 1, 1, 1), -- Shadowvault Slayer's Cloak + (@Ref25J, 50005, 0, 1, 1, 1, 1), -- Amulet of the Silent Eulogy + (@Ref25J, 50411, 0, 1, 1, 1, 1), -- Scourgeborne Waraxe + (@Ref25J, 50001, 0, 1, 1, 1, 1), -- Ikfirus's Sack of Wonder +-- Gunship_Armory10H_reference + (@RefJ10H, 51912, 0, 1, 1, 1, 1), -- Saronite Gargoyle Cloak (heroic) + (@RefJ10H, 51908, 0, 1, 1, 1, 1), -- Cord of Dark Suffering (heroic) + (@RefJ10H, 51909, 0, 1, 1, 1, 1), -- Neverending Winter (heroic) + (@RefJ10H, 51916, 0, 1, 1, 1, 1), -- Frost Giant's Cleaver (heroic) + (@RefJ10H, 51910, 0, 1, 1, 1, 1), -- Midnight + (@RefJ10H, 51915, 0, 1, 1, 1, 1), -- Bone Drake's Enameled Boots (heroic) + (@RefJ10H, 51911, 0, 1, 1, 1, 1), -- Pauldrons of Lost Hope (heroic) + (@RefJ10H, 50345, 0, 1, 1, 1, 1), -- Muradin's Spyglass (heroic) + (@RefJ10H, 51906, 0, 1, 1, 1, 1), -- Ice-Reinforced Vrykul Helm (heroic) + (@RefJ10H, 51913, 0, 1, 1, 1, 1), -- Abomination's Bloody Ring (heroic) + (@RefJ10H, 51914, 0, 1, 1, 1, 1), -- Icecrown Rampart Bracers (heroic) + (@RefJ10H, 51907, 0, 1, 1, 1, 1), -- Bracers of Pale Illumination (heroic) +-- Gunship_Armory25H_reference + (@RefJ25H, 50663, 0, 1, 1, 1, 1), -- Gunship Captain's Mittens (heroic) + (@RefJ25H, 50659, 0, 1, 1, 1, 1), -- Polar Bear Claw Bracers (heroic) + (@RefJ25H, 50661, 0, 1, 1, 1, 1), -- Corp'rethar Ceremonial Crown (heroic) + (@RefJ25H, 50667, 0, 1, 1, 1, 1), -- Waistband of Righteous Fury (heroic) + (@RefJ25H, 50660, 0, 1, 1, 1, 1), -- Boneguard Commander's Pauldrons (heroic) + (@RefJ25H, 50655, 0, 1, 1, 1, 1), -- Scourge Hunter's Vambraces (heroic) + (@RefJ25H, 50366, 0, 1, 1, 1, 1), -- Althor's Abacus (heroic) + (@RefJ25H, 50349, 0, 1, 1, 1, 1), -- Corpse Tongue Coin (heroic) + (@RefJ25H, 50657, 0, 1, 1, 1, 1), -- Skeleton Lord's Circle (heroic) + (@RefJ25H, 50665, 0, 1, 1, 1, 1), -- Boots of Unnatural Growth (heroic) + (@RefJ25H, 50664, 0, 1, 1, 1, 1), -- Ring of Rapid Ascent (heroic) + (@RefJ25H, 50653, 0, 1, 1, 1, 1), -- Shadowvault Slayer's Cloak (heroic) + (@RefJ25H, 50658, 0, 1, 1, 1, 1), -- Amulet of the Silent Eulogy (heroic) + (@RefJ25H, 50654, 0, 1, 1, 1, 1), -- Scourgeborne Waraxe (heroic) + (@RefJ25H, 50656, 0, 1, 1, 1, 1); -- Ikfirus's Sack of Wonder (heroic) + +-- Bind the refs to the objects +DELETE FROM `gameobject_loot_template` WHERE `entry` IN (@Gunship10N,@Gunship10H,@Gunship25N,@Gunship25H); +INSERT INTO `gameobject_loot_template`(`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES +-- Gunship10N + (@Gunship10N,@emblem, 100, 1, 0, 2, 2), -- Gunship Armory 2xemblems 10N + (@Gunship10N, 1, 100, 1, 0,-@Ref10J, 2), -- 2 from reference 10Normal +-- Gunship25N + (@Gunship25N,@emblem, 100, 1, 0, 2, 2), -- Gunship Armory 2xemblems 25N + (@Gunship25N, 1, 100, 1, 0,-@Ref25J, 2), -- 3 from reference 25Normal + (@Gunship25N,@SfShard,-35, 1, 0, 1, 1), -- Shadowfrost Shard @ 38% chance + (@Gunship25N,@PriSar, 38, 1, 0, 1, 1), -- Primordial Saronite @ 10% chance +-- Gunship10H + (@Gunship10H,@emblem, 100, 1, 0, 2, 2), -- Gunship Armory 2xemblems 10H + (@Gunship10H, 1, 100, 1, 0,-@RefJ10H, 2), -- 2 from reference 10Heroic + (@Gunship10H,@PriSar, 38, 1, 0, 1, 1), -- Primordial Saronite @ 38% chance +-- Gunship25H + (@Gunship25H,@emblem, 100, 1, 0, 2, 2), -- Gunship Armory 2xemblems 25H + (@Gunship25H, 1, 100, 1, 0,-@RefJ25H, 2), -- 3 from reference 25Heroic + (@Gunship25H,@SfShard,-75, 1, 0, 1, 1), -- Shadowfrost Shard @ 75% chance + (@Gunship25H,@PriSar, 50, 1, 0, 1, 1); -- Primordial Saronite @ 50% chance + +SET @Twins := 34329; +SET @emblem := 49426; +DELETE FROM `reference_loot_template` WHERE `entry`=@Twins; +INSERT INTO `reference_loot_template`(`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES + (@Twins, 47296, 0, 1, 1, 1, 1), -- Greaves of Ruthless Judgment + (@Twins, 47297, 0, 1, 1, 1, 1), -- The Executioner's Vice + (@Twins, 47298, 0, 1, 1, 1, 1), -- Armguards of the Shieldmaiden + (@Twins, 47299, 0, 1, 1, 1, 1), -- Belt of the Pitiless Killer + (@Twins, 47300, 0, 1, 1, 1, 1), -- Gouge of the Frigid Heart + (@Twins, 47301, 0, 1, 1, 1, 1), -- Skyweaver Vestments + (@Twins, 47302, 0, 1, 1, 1, 1), -- Twin's Pact + (@Twins, 47303, 0, 1, 1, 1, 1), -- Death's Choice + (@Twins, 47304, 0, 1, 1, 1, 1), -- Legplates of Ascension + (@Twins, 47305, 0, 1, 1, 1, 1); -- Legionnaire's Gorget +SET @Gunship10N := 28057; -- Data1 for 201872 & 202177 +SET @Ref10J := 12036; +-- Gunship_Armory10N_reference +DELETE FROM `reference_loot_template` WHERE `entry`=@Ref10J; +INSERT INTO `reference_loot_template`(`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES + (@Ref10J, 50791, 0, 1, 1, 1, 1), -- Saronite Gargoyle Cloak + (@Ref10J, 50795, 0, 1, 1, 1, 1), -- Cord of Dark Suffering + (@Ref10J, 50794, 0, 1, 1, 1, 1), -- Neverending Winter + (@Ref10J, 50787, 0, 1, 1, 1, 1), -- Frost Giant's Cleaver + (@Ref10J, 50793, 0, 1, 1, 1, 1), -- Midnight + (@Ref10J, 50788, 0, 1, 1, 1, 1), -- Bone Drake's Enameled Boots + (@Ref10J, 50792, 0, 1, 1, 1, 1), -- Pauldrons of Lost Hope + (@Ref10J, 50340, 0, 1, 1, 1, 1), -- Muradin's Spyglass + (@Ref10J, 50797, 0, 1, 1, 1, 1), -- Ice-Reinforced Vrykul Helm + (@Ref10J, 50790, 0, 1, 1, 1, 1), -- Abomination's Bloody Ring + (@Ref10J, 50789, 0, 1, 1, 1, 1), -- Icecrown Rampart Bracers + (@Ref10J, 50796, 0, 1, 1, 1, 1); -- Bracers of Pale Illumination +-- Bind the refs to the objects +DELETE FROM `gameobject_loot_template` WHERE `entry`=@Gunship10N; +INSERT INTO `gameobject_loot_template`(`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES +-- Gunship10N + (@Gunship10N,@emblem, 100, 1, 0, 2, 2), -- Gunship Armory 2xemblems 10N + (@Gunship10N, 1, 100, 1, 0,-@Ref10J, 2); -- 2 from reference 10Normal + +DELETE FROM `creature_addon` WHERE `guid` IN (83459, 78383, 81170, 81165, 81531); +DELETE FROM `gameobject_loot_template` WHERE `entry` IN (28045, 28057, 28072, 28090); +DELETE FROM `reference_loot_template` WHERE `entry` IN (34329, 12036, 34251, 34263, 34275); + +DELETE FROM `creature_loot_template` WHERE `entry` = 38490; +INSERT INTO `creature_loot_template` VALUES + (38490, 49426, 100, 1, 0, 2, 2), + (38490, 50340, 0, 1, 1, 1, 1), + (38490, 50787, 0, 1, 1, 1, 1), + (38490, 50788, 0, 1, 1, 1, 1), + (38490, 50789, 0, 1, 2, 1, 1), + (38490, 50790, 0, 1, 2, 1, 1), + (38490, 50791, 0, 1, 1, 1, 1), + (38490, 50792, 0, 1, 2, 1, 1), + (38490, 50793, 0, 1, 1, 1, 1), + (38490, 50794, 0, 1, 1, 1, 1), + (38490, 50795, 0, 1, 2, 1, 1), + (38490, 50796, 0, 1, 2, 1, 1), + (38490, 50797, 0, 1, 2, 1, 1); + +DELETE FROM `creature_loot_template` WHERE `entry` = 38490; +INSERT INTO `creature_loot_template` VALUES + (38490, 49426, 100, 1, 0, 2, 2), + (38490, 49908, 0, 1, 1, 1, 1), + (38490, 51916, 0, 1, 1, 1, 1), + (38490, 51910, 0, 1, 1, 1, 1), + (38490, 51909, 0, 1, 2, 1, 1), + (38490, 51915, 0, 1, 2, 1, 1), + (38490, 51908, 0, 1, 1, 1, 1), + (38490, 51912, 0, 1, 2, 1, 1), + (38490, 51914, 0, 1, 1, 1, 1), + (38490, 51907, 0, 1, 1, 1, 1), + (38490, 50345, 0, 1, 2, 1, 1), + (38490, 51911, 0, 1, 2, 1, 1), + (38490, 51906, 0, 1, 2, 1, 1), + (38490, 51913, 0, 1, 2, 1, 1); + +DELETE FROM `creature_loot_template` WHERE `entry` = 38494; +INSERT INTO `creature_loot_template` VALUES + (38494, 49426, 100, 1, 0, 2, 2), + (38494, 49908, 10, 1, 0, 1, 1), + (38494, 49998, 0, 1, 1, 1, 1), + (38494, 49999, 0, 1, 2, 1, 1), + (38494, 50000, 0, 1, 2, 1, 1), + (38494, 50001, 0, 1, 3, 1, 1), + (38494, 50002, 0, 1, 2, 1, 1), + (38494, 50003, 0, 1, 3, 1, 1), + (38494, 50005, 0, 1, 1, 1, 1), + (38494, 50006, 0, 1, 3, 1, 1), + (38494, 50008, 0, 1, 1, 1, 1), + (38494, 50009, 0, 1, 3, 1, 1), + (38494, 50010, 0, 1, 2, 1, 1), + (38494, 50011, 0, 1, 1, 1, 1), + (38494, 50274, 37.5, 1, 0, 1, 1), + (38494, 50352, 0, 1, 1, 1, 1), + (38494, 50359, 0, 1, 2, 1, 1), + (38494, 50411, 0, 1, 3, 1, 1); + +DELETE FROM `creature_loot_template` WHERE `entry` = 38494; +INSERT INTO `creature_loot_template` VALUES + (38494, 49426, 100, 1, 0, 2, 2), + (38494, 49908, 10, 1, 0, 1, 1), + (38494, 50274, 0, 1, 1, 1, 1), + (38494, 50659, 0, 1, 2, 1, 1), + (38494, 50664, 0, 1, 2, 1, 1), + (38494, 50656, 0, 1, 3, 1, 1), + (38494, 50663, 0, 1, 2, 1, 1), + (38494, 50657, 0, 1, 3, 1, 1), + (38494, 50658, 0, 1, 1, 1, 1), + (38494, 50655, 0, 1, 1, 1, 1), + (38494, 50660, 0, 1, 3, 1, 1), + (38494, 50665, 0, 1, 2, 1, 1), + (38494, 50366, 0, 1, 1, 1, 1), + (38494, 50653, 37.5, 1, 0, 1, 1), + (38494, 50654, 0, 1, 1, 1, 1), + (38494, 50661, 0, 1, 2, 1, 1), + (38494, 50349, 0, 1, 3, 1, 1), + (38494, 50667, 0, 1, 3, 1, 1); + + + DROP TABLE IF EXISTS `locales_creature_text`; + CREATE TABLE IF NOT EXISTS `locales_creature_text` ( + `entry` int(10) unsigned NOT NULL, + `textGroup` tinyint(3) unsigned NOT NULL, + `id` int(10) unsigned NOT NULL, + `text_loc1` text, + `text_loc2` text, + `text_loc3` text, + `text_loc4` text, + `text_loc5` text, + `text_loc6` text, + `text_loc7` text, + `text_loc8` text, + PRIMARY KEY (`entry`,`textGroup`,`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + +-- -------------------------------------------------------------------------} +-- ----------- Insert ID creature_text Into locales_creature_text ---------- +-- -------------------------------------------------------------------------{ +INSERT IGNORE INTO `locales_creature_text` (`entry`, `textGroup`, `id`) SELECT `entry`, `groupid`, `id` FROM `creature_text`; + + -- -------------------------------------------------------------------------} -- ------------------------------ Ruby Sanctum ----------------------------- -- -------------------------------------------------------------------------{ @@ -877,38 +1607,69 @@ INSERT INTO `creature_template`(`entry`,`difficulty_entry_1`,`difficulty_entry_2 (39945, 0, 0, 0, 0, 0, 31952, 0, 0, 0, "Halion (3)", "The Twilight Destroyer", '', 0, 83, 83, 2, 14, 14, 0, 1, 1.42857, 1, 3, 468, 702, 0, 175, 168.2, 2000, 2000, 1, 768, 0, 0, 0, 0, 0, 0, 374, 562, 140, 2, 108, 39945, 0, 39863, 0, 0, 0, 0, 0, 0, 26662, 74524, 74562, 74531, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 3, 4200, 1, 1, 0, 0, 0, 0, 0, 0, 0, 150, 1, 0, 803160063, 1, "", 12340); DELETE FROM `creature_loot_template` WHERE `entry` IN (39863, 39864, 39944, 39945); INSERT INTO `creature_loot_template`(`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES - (39863, 38557, 0, 1, 1, 8, 12), (39863, 49426, 100, 1, 0, 3, 3), - (39863, 53103, 0, 1, 2, 1, 1), (39863, 53110, 0, 1, 2, 1, 1), - (39863, 53111, 0, 1, 2, 1, 1), (39863, 53112, 0, 1, 1, 1, 1), - (39863, 53113, 0, 1, 1, 1, 1), (39863, 53114, 0, 1, 1, 1, 1), - (39863, 53115, 0, 1, 2, 1, 1), (39863, 53116, 0, 1, 1, 1, 1), - (39863, 53117, 0, 1, 1, 1, 1), (39863, 53118, 0, 1, 1, 1, 1), - (39863, 53119, 0, 1, 2, 1, 1), (39863, 53121, 0, 1, 2, 1, 1), - (39864, 49426, 100, 1, 0, 3, 3), (39864, 53125, 0, 1, 2, 1, 1), - (39864, 53126, 0, 1, 2, 1, 1), (39864, 53127, 0, 1, 3, 1, 1), - (39864, 53129, 0, 1, 3, 1, 1), (39864, 53132, 0, 1, 2, 1, 1), - (39864, 53133, 0, 1, 1, 1, 1), (39864, 53134, 0, 1, 3, 1, 1), - (39864, 53486, 0, 1, 1, 1, 1), (39864, 53487, 0, 1, 3, 1, 1), - (39864, 53488, 0, 1, 3, 1, 1), (39864, 53489, 0, 1, 2, 1, 1), - (39864, 53490, 0, 1, 3, 1, 1), (39864, 54569, 0, 1, 1, 1, 1), - (39864, 54571, 0, 1, 2, 1, 1), (39864, 54572, 0, 1, 1, 1, 1), - (39864, 54573, 0, 1, 1, 1, 1), (39944, 33568, 0, 1, 1, 11, 12), - (39944, 38557, 0, 1, 1, 8, 12), (39944, 49426, 100, 1, 0, 3, 3), - (39944, 54556, 0, 1, 1, 1, 1), (39944, 54557, 0, 1, 2, 1, 1), - (39944, 54558, 0, 1, 2, 1, 1), (39944, 54559, 0, 1, 1, 1, 1), - (39944, 54560, 0, 1, 2, 1, 1), (39944, 54561, 0, 1, 2, 1, 1), - (39944, 54562, 0, 1, 1, 1, 1), (39944, 54563, 0, 1, 2, 1, 1), - (39944, 54564, 0, 1, 2, 1, 1), (39944, 54565, 0, 1, 1, 1, 1), - (39944, 54566, 0, 1, 1, 1, 1), (39944, 54567, 0, 1, 1, 1, 1), - (39945, 49426, 100, 1, 0, 3, 3), (39945, 54576, 0, 1, 2, 1, 1), - (39945, 54577, 0, 1, 1, 1, 1), (39945, 54578, 0, 1, 1, 1, 1), - (39945, 54579, 0, 1, 1, 1, 1), (39945, 54580, 0, 1, 3, 1, 1), - (39945, 54581, 0, 1, 3, 1, 1), (39945, 54582, 0, 1, 3, 1, 1), - (39945, 54583, 0, 1, 1, 1, 1), (39945, 54584, 0, 1, 3, 1, 1), - (39945, 54585, 0, 1, 3, 1, 1), (39945, 54586, 0, 1, 1, 1, 1), - (39945, 54587, 0, 1, 1, 1, 1), (39945, 54588, 0, 1, 2, 1, 1), - (39945, 54589, 0, 1, 2, 1, 1), (39945, 54590, 0, 1, 2, 1, 1), - (39945, 54591, 0, 1, 2, 1, 1); +(39863, 38557, 0, 1, 1, 8, 12), +(39863, 49426, 100, 1, 0, 3, 3), +(39863, 53103, 0, 1, 2, 1, 1), +(39863, 53110, 0, 1, 2, 1, 1), +(39863, 53111, 0, 1, 2, 1, 1), +(39863, 53112, 0, 1, 1, 1, 1), +(39863, 53113, 0, 1, 1, 1, 1), +(39863, 53114, 0, 1, 1, 1, 1), +(39863, 53115, 0, 1, 2, 1, 1), +(39863, 53116, 0, 1, 1, 1, 1), +(39863, 53117, 0, 1, 1, 1, 1), +(39863, 53118, 0, 1, 1, 1, 1), +(39863, 53119, 0, 1, 2, 1, 1), +(39863, 53121, 0, 1, 2, 1, 1), +(39864, 49426, 100, 1, 0, 3, 3), +(39864, 53125, 0, 1, 2, 1, 1), +(39864, 53126, 0, 1, 2, 1, 1), +(39864, 53127, 0, 1, 3, 1, 1), +(39864, 53129, 0, 1, 3, 1, 1), +(39864, 53132, 0, 1, 2, 1, 1), +(39864, 53133, 0, 1, 1, 1, 1), +(39864, 53134, 0, 1, 3, 1, 1), +(39864, 53486, 0, 1, 1, 1, 1), +(39864, 53487, 0, 1, 3, 1, 1), +(39864, 53488, 0, 1, 3, 1, 1), +(39864, 53489, 0, 1, 2, 1, 1), +(39864, 53490, 0, 1, 3, 1, 1), +(39864, 54569, 0, 1, 1, 1, 1), +(39864, 54571, 0, 1, 2, 1, 1), +(39864, 54572, 0, 1, 1, 1, 1), +(39864, 54573, 0, 1, 1, 1, 1), +(39944, 33568, 0, 1, 1, 11, 12), +(39944, 38557, 0, 1, 1, 8, 12), +(39944, 49426, 100, 1, 0, 3, 3), +(39944, 54556, 0, 1, 1, 1, 1), +(39944, 54557, 0, 1, 2, 1, 1), +(39944, 54558, 0, 1, 2, 1, 1), +(39944, 54559, 0, 1, 1, 1, 1), +(39944, 54560, 0, 1, 2, 1, 1), +(39944, 54561, 0, 1, 2, 1, 1), +(39944, 54562, 0, 1, 1, 1, 1), +(39944, 54563, 0, 1, 2, 1, 1), +(39944, 54564, 0, 1, 2, 1, 1), +(39944, 54565, 0, 1, 1, 1, 1), +(39944, 54566, 0, 1, 1, 1, 1), +(39944, 54567, 0, 1, 1, 1, 1), +(39945, 49426, 100, 1, 0, 3, 3), +(39945, 54576, 0, 1, 2, 1, 1), +(39945, 54577, 0, 1, 1, 1, 1), +(39945, 54578, 0, 1, 1, 1, 1), +(39945, 54579, 0, 1, 1, 1, 1), +(39945, 54580, 0, 1, 3, 1, 1), +(39945, 54581, 0, 1, 3, 1, 1), +(39945, 54582, 0, 1, 3, 1, 1), +(39945, 54583, 0, 1, 1, 1, 1), +(39945, 54584, 0, 1, 3, 1, 1), +(39945, 54585, 0, 1, 3, 1, 1), +(39945, 54586, 0, 1, 1, 1, 1), +(39945, 54587, 0, 1, 1, 1, 1), +(39945, 54588, 0, 1, 2, 1, 1), +(39945, 54589, 0, 1, 2, 1, 1), +(39945, 54590, 0, 1, 2, 1, 1), +(39945, 54591, 0, 1, 2, 1, 1); -- NPC: Valithria Dreamwalker, http://wotlk.openwow.com/npc=36789 -- UNKNOWN SPELL: Summon Suppresser, http://wotlk.openwow.com/spell=70936 -- UNKNOWN SPELL: Twisted Nightmares, http://wotlk.openwow.com/spell=71941 @@ -967,4 +1728,4 @@ SELECT `entry` FROM `creature_template` WHERE `AIName` NOT IN ("EventAI")); -- ------------------------------------------------------------------------- -- POOLS DELETE FROM `pool_creature` WHERE `guid` NOT IN (SELECT `guid` FROM `creature`); -- Dinamic // "creature_pool" table - DELETE FROM `pool_gameobject` WHERE `guid` NOT IN (SELECT `guid` FROM `gameobject`); -- Dinamic // "gameobject_pool" table \ No newline at end of file + DELETE FROM `pool_gameobject` WHERE `guid` NOT IN (SELECT `guid` FROM `gameobject`); -- Dinamic // "gameobject_pool" table diff --git a/sql/SQL Custom/#3203_Premium_accounts_auth.sql b/sql/SQL Custom/#3203_Premium_accounts_auth.sql new file mode 100644 index 0000000..5df6023 --- /dev/null +++ b/sql/SQL Custom/#3203_Premium_accounts_auth.sql @@ -0,0 +1 @@ +ALTER TABLE `account` ADD `premium` bigint(40) NOT NULL DEFAULT '0'; \ No newline at end of file diff --git a/sql/SQL Custom/#3203_Premium_accounts_world.sql b/sql/SQL Custom/#3203_Premium_accounts_world.sql new file mode 100644 index 0000000..46aea5e --- /dev/null +++ b/sql/SQL Custom/#3203_Premium_accounts_world.sql @@ -0,0 +1 @@ +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES (15000, 'Your premium account membership time will end: %s', '', '', '', '', '', '', '', 'Âðåìÿ èñïîëüçîâàíèÿ âàøåãî ïðåìèóì àêêàóíòà èñòåêàåò: %s'); \ No newline at end of file diff --git a/sql/SQL Custom/NPC - ADDR.sql b/sql/SQL Custom/NPC - ADDR.sql new file mode 100644 index 0000000..1f41620 --- /dev/null +++ b/sql/SQL Custom/NPC - ADDR.sql @@ -0,0 +1,100 @@ +-- NPC Custom ADDR by Sensi + + +REPLACE INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (80001, 0, 0, 0, 0, 0, 24374, 0, 0, 0, 'NPC Héritage', 'Custom ADDR', '', 0, 83, 83, 0, 35, 35, 1, 1, 3, 60000, 100000, 0, 555555, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'custom_npc'); + + + + + +REPLACE INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (80002, 0, 0, 0, 0, 0, 26770, 0, 0, 0, 'NPC Buffer', 'Custom ADDR', '', 0, 83, 83, 0, 35, 35, 1, 1, 3, 60000, 100000, 0, 555555, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'buffnpc'); + + + + + +REPLACE INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (100000, 0, 0, 0, 0, 0, 18674, 0, 0, 0, 'Bienvenue sur ADDR', 'Messager de bienvenue', '', 0, 83, 83, 0, 35, 35, 1, 1, 3, 60000, 100000, 0, 555555, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'npc_welcome'); + + + + +--Texte du npc de bienvenue +-- Contenu de la table `npc_text` \r\n\r\n +-- + + +INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `lang0`, `prob0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `lang1`, `prob1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `lang2`, `prob2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `lang3`, `prob3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `lang4`, `prob4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `lang5`, `prob5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `lang6`, `prob6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `lang7`, `prob7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `WDBVerified`) VALUES +(100000, 'Bienvenue dans la communauté d\'audeladureve', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 12340); + + + +INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `lang0`, `prob0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `lang1`, `prob1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `lang2`, `prob2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `lang3`, `prob3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `lang4`, `prob4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `lang5`, `prob5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `lang6`, `prob6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `lang7`, `prob7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `WDBVerified`) VALUES +(100001, 'Salut à toi $N, jeune aventurier.\r\n\r\n Tu vas découvrir le monde de World of Warcraft sur notre serveur d\'AuDelaDuReve. Nous espérons que tu passeras de bons moments parmi nous.\r\n\r\nEn cas de soucis n\'hésites pas à demander de l\'aide à un MJ ou alors sur le forum que tu trouveras à cette adresse : http://audeladureve.com\r\n\r\nADDR Le Staff', 'Bon Game à toi $N', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 12340); + + + +INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `lang0`, `prob0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `lang1`, `prob1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `lang2`, `prob2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `lang3`, `prob3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `lang4`, `prob4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `lang5`, `prob5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `lang6`, `prob6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `lang7`, `prob7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `WDBVerified`) VALUES +(100002, 'Le channel général est là pour que tous les joueurs puissent parler sur un channel commun quelle que soit leur race.\r\n\r\nNous vous invitons vivement à le rejoindre pour y trouvez toute l\'aide dont vous avez besoin (les MJs y sont constamment connectés). Pour le rejoindre, tapez ceci\r\n\r\n\r\n\r\n/join 5 \r\n\r\n\r\n\r\n et pour y parler , tapez ceci \r\n\r\n\r\n\r\n/5 (un espace) et votre message\r\n\r\n\r\n\r\n.', 'Bon Game à toi $N', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 12340); + + + + + +INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `lang0`, `prob0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `lang1`, `prob1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `lang2`, `prob2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `lang3`, `prob3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `lang4`, `prob4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `lang5`, `prob5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `lang6`, `prob6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `lang7`, `prob7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `WDBVerified`) VALUES +(100003, 'Le serveur est hébergé dans un data center pour vous assurer une parfaite qualité de jeux .\r\n\r\n Configuration Machine \r\n\r\nDual Xeon 3.2 mhz duo core 2 \r\n\r\n Scsi u320 raid 0\r\n\r\n 16 giga de ram sur borne 1 gbp/s.\r\n\r\n\r\n\r\n Nous avons une capacité de plus de 2000 Players sans lag. Notre serveur est dit Blizzlike (Xp fois 2 par rapport à l\'officiel)\r\n\r\n Traduit en Francais a 90%', 'Bon Game à toi $N', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 12340); + + + + +INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `lang0`, `prob0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `lang1`, `prob1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `lang2`, `prob2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `lang3`, `prob3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `lang4`, `prob4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `lang5`, `prob5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `lang6`, `prob6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `lang7`, `prob7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `WDBVerified`) VALUES +(100004, 'Concernant le PvP :\r\n\r\nRègle 1: Il n\'y a aucune limitation de niveau pour des combats entre Hordeux et Allianceux (voir au sein de la même faction). C\'est un serveur PvP, libre à vous d\'engager le combat ou non quand vous rencontrez une personne de la faction adverse. ! ', 'Bon Game à toi $N', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 12340); + + + + +INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `lang0`, `prob0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `lang1`, `prob1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `lang2`, `prob2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `lang3`, `prob3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `lang4`, `prob4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `lang5`, `prob5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `lang6`, `prob6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `lang7`, `prob7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `WDBVerified`) VALUES +(100005, 'Instances : Toutes nos instance sont scripter de manière à coller le plus possible à l\'officiel \r\n\r\n Pour vous assurez un plaisir de jeux approchant l\'exeptionnel', 'Bon Game à toi $N', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 12340); + + + + + + + + + + + + + + + + +--Spawn des NPC de bienvenue + + +INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`) VALUES +(9987148, 100000, 0, 1, 1, 0, 0, -8924.02, -136.505, 80.9935, 1.96036, 300, 0, 0, 58080, 0, 0, 0, 0, 0), +(9987398, 100000, 0, 1, 1, 0, 0, -6231.12, 320.11, 383.034, 2.01063, 300, 0, 0, 58080, 0, 0, 0, 0, 0), +(9987399, 100000, 1, 1, 1, 0, 0, 10325.4, 821.352, 1326.42, 2.40471, 300, 0, 0, 58080, 0, 0, 0, 0, 0), +(9987400, 100000, 530, 1, 1, 0, 0, -3973.06, -13923.8, 100.471, 5.77894, 300, 0, 0, 58080, 0, 0, 0, 0, 0), +(9987401, 100000, 1, 1, 1, 0, 0, -604.134, -4247.07, 38.9545, 2.43867, 300, 0, 0, 58080, 0, 0, 0, 0, 0), +(9987402, 100000, 0, 1, 1, 0, 0, 1656.83, 1682.66, 120.719, 0.0074091, 300, 0, 0, 58080, 0, 0, 0, 0, 0), +(9987403, 100000, 1, 1, 1, 0, 0, -2909.55, -252.446, 52.941, 3.34187, 300, 0, 0, 58080, 0, 0, 0, 0, 0), +(9987404, 100000, 530, 1, 1, 0, 0, 10355, -6369.73, 35.997, 1.77461, 300, 0, 0, 58080, 0, 0, 0, 0, 0); + + + + + + + + + + + + + + + + diff --git a/sql/SQL Custom/NPC - transfers.sql b/sql/SQL Custom/NPC - transfers.sql new file mode 100644 index 0000000..1fbded6 --- /dev/null +++ b/sql/SQL Custom/NPC - transfers.sql @@ -0,0 +1 @@ +REPLACE INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (80001, 0, 0, 0, 0, 0, 24374, 0, 0, 0, 'BIG BOSS', '3server', '', 0, 83, 83, 0, 35, 35, 1, 1, 3, 60000, 100000, 0, 555555, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'custom_npc'); \ No newline at end of file diff --git a/sql/SQL Custom/NPC teleporteur.sql b/sql/SQL Custom/NPC teleporteur.sql new file mode 100644 index 0000000..7decf61 --- /dev/null +++ b/sql/SQL Custom/NPC teleporteur.sql @@ -0,0 +1,45 @@ +DROP TABLE IF EXISTS `custom_npc_tele_category`; +CREATE TABLE `custom_npc_tele_category` ( + `id` int(6) unsigned NOT NULL default '0', + `name` varchar(255) NOT NULL default '', + `flag` tinyint(3) unsigned NOT NULL default '0', + `data0` bigint(20) unsigned NOT NULL default '0', + `data1` int(6) unsigned NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +DROP TABLE IF EXISTS `custom_npc_tele_destination`; +CREATE TABLE `custom_npc_tele_destination` ( + `id` int(6) unsigned NOT NULL auto_increment, + `name` char(100) NOT NULL default '', + `pos_X` float NOT NULL default '0', + `pos_Y` float NOT NULL default '0', + `pos_Z` float NOT NULL default '0', + `map` smallint(5) unsigned NOT NULL default '0', + `orientation` float NOT NULL default '0', + `level` tinyint(3) unsigned NOT NULL default '0', + `cost` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + + + +DROP TABLE IF EXISTS `custom_npc_tele_association`; +CREATE TABLE `custom_npc_tele_association` ( + `cat_id` int(6) unsigned NOT NULL default '0', + `dest_id` int(6) unsigned NOT NULL default '0', + PRIMARY KEY (`cat_id`, `dest_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +INSERT INTO `npc_text` (`ID`, `text0_0`) VALUES + (100000, 'Coisissez Votre Catégorie'), + (100001, 'Choisissez Votre Destination'); + + + +INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `Armor_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`, `WDBVerified`) VALUES +(100000, 0, 0, 0, 0, 0, 27926, 27927, 0, 0, 'Pandaria Téléporteur', 'Maitre Téléporteur', '', 0, 80, 80, 2, 35, 35, 1, 1, 1.14286, 1, 0, 346, 499, 0, 287, 1, 0, 0, 8, 512, 8, 0, 0, 0, 0, 0, 315, 468, 69, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 10, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'npc_teleport', 0); diff --git "a/sql/SQL Custom/NPC t\303\203\302\251l\303\203\302\251porteur.sql" "b/sql/SQL Custom/NPC t\303\203\302\251l\303\203\302\251porteur.sql" new file mode 100644 index 0000000..7decf61 --- /dev/null +++ "b/sql/SQL Custom/NPC t\303\203\302\251l\303\203\302\251porteur.sql" @@ -0,0 +1,45 @@ +DROP TABLE IF EXISTS `custom_npc_tele_category`; +CREATE TABLE `custom_npc_tele_category` ( + `id` int(6) unsigned NOT NULL default '0', + `name` varchar(255) NOT NULL default '', + `flag` tinyint(3) unsigned NOT NULL default '0', + `data0` bigint(20) unsigned NOT NULL default '0', + `data1` int(6) unsigned NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +DROP TABLE IF EXISTS `custom_npc_tele_destination`; +CREATE TABLE `custom_npc_tele_destination` ( + `id` int(6) unsigned NOT NULL auto_increment, + `name` char(100) NOT NULL default '', + `pos_X` float NOT NULL default '0', + `pos_Y` float NOT NULL default '0', + `pos_Z` float NOT NULL default '0', + `map` smallint(5) unsigned NOT NULL default '0', + `orientation` float NOT NULL default '0', + `level` tinyint(3) unsigned NOT NULL default '0', + `cost` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + + + +DROP TABLE IF EXISTS `custom_npc_tele_association`; +CREATE TABLE `custom_npc_tele_association` ( + `cat_id` int(6) unsigned NOT NULL default '0', + `dest_id` int(6) unsigned NOT NULL default '0', + PRIMARY KEY (`cat_id`, `dest_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + + +INSERT INTO `npc_text` (`ID`, `text0_0`) VALUES + (100000, 'Coisissez Votre Catégorie'), + (100001, 'Choisissez Votre Destination'); + + + +INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `Armor_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`, `WDBVerified`) VALUES +(100000, 0, 0, 0, 0, 0, 27926, 27927, 0, 0, 'Pandaria Téléporteur', 'Maitre Téléporteur', '', 0, 80, 80, 2, 35, 35, 1, 1, 1.14286, 1, 0, 346, 499, 0, 287, 1, 0, 0, 8, 512, 8, 0, 0, 0, 0, 0, 315, 468, 69, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 10, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'npc_teleport', 0); diff --git a/sql/SQL Custom/VIP - World.sql b/sql/SQL Custom/VIP - World.sql new file mode 100644 index 0000000..cdb4180 --- /dev/null +++ b/sql/SQL Custom/VIP - World.sql @@ -0,0 +1,52 @@ +DELETE FROM command WHERE name IN ("vip", "vip bank", "vip save", "vip tele", "vip tele dalaran", "vip tele zoneshop", "vip tele shattrath", +"vip tele guruarena", "vip tele stormwind", "vip tele ironforge", "vip tele darnassus", "vip tele exodar", "vip tele orgrimmar", +"vip tele thunderbluff", "vip tele undercity", "vip tele silvermoon", "vip gamble", "vip roulette"); +INSERT INTO command (name, security, help) VALUES +("vip", 1, "Syntax: .vip + +VIP commands."), +("vip bank", 1, "Syntax: .vip bank + +Show your bank inventory."), +("vip save", 1, "Syntax: .vip save + +Saves your character."), +("vip tele", 1, "Syntax: .vip tele + +Teleports you to entered location."), +("vip tele dalaran", 1, "Syntax: .vip tele dalaran + +Teleports you to entered location."), +("vip tele zoneshop", 1, "Syntax: .vip tele zoneshop + +Teleports you to Dalaran"), +("vip tele shattrath", 1, "Syntax: .vip tele shattrath + +Teleports you to Shattrath"), +("vip tele guruarena", 1, "Syntax: .vip tele guruarena + +Teleports you to Gurubashi Arena"), +("vip tele stormwind", 1, "Syntax: .vip tele stormwind + +Teleports you to Stormwind(only for Alliance)"), +("vip tele ironforge", 1, "Syntax: .vip tele ironforge + +Teleports you to Ironforge(only for Alliance)"), +("vip tele darnassus", 1, "Syntax: .vip tele darnassus + +Teleports you to Darnassus(only for Alliance)"), +("vip tele exodar", 1, "Syntax: .vip tele exodar + +Teleports you to Exodar(only for Alliance)"), +("vip tele orgrimmar", 1, "Syntax: .vip tele orgrimmar + +Teleports you to Orgrimmar(only for Horde)"), +("vip tele thunderbluff", 1, "Syntax: .vip tele thunderbluff + +Teleports you to Thunder Bluff(only for Horde)"), +("vip tele undercity", 1, "Syntax: .vip tele undercity + +Teleports you to Undercity(only for Horde)"), +("vip tele silvermoon", 1, "Syntax: .vip tele silvermoon + +Teleports you to Silvermoon(only for Horde)"); diff --git a/sql/SQL Custom/characters_armory.sql b/sql/SQL Custom/characters_armory.sql new file mode 100644 index 0000000..14fe8c9 --- /dev/null +++ b/sql/SQL Custom/characters_armory.sql @@ -0,0 +1,39 @@ +DROP TABLE IF EXISTS `armory_character_stats`; +CREATE TABLE `armory_character_stats` ( + `guid` int(11) NOT NULL, + `data` longtext NOT NULL, + `save_date` int(11) default NULL, + PRIMARY KEY (`guid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='World of Warcraft Armory table'; + +DROP TABLE IF EXISTS `character_feed_log`; +CREATE TABLE `character_feed_log` ( + `guid` int(11) NOT NULL, + `type` smallint(1) NOT NULL, + `data` int(11) NOT NULL, + `date` int(11) default NULL, + `counter` int(11) NOT NULL, + `difficulty` smallint(6) default '-1', + `item_guid` int(11) default '-1', + `item_quality` smallint(6) NOT NULL default '-1' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +DROP TABLE IF EXISTS `armory_game_chart`; +CREATE TABLE `armory_game_chart` ( + `gameid` int(11) NOT NULL, + `teamid` int(11) NOT NULL, + `guid` int(11) NOT NULL, + `changeType` int(11) NOT NULL, + `ratingChange` int(11) NOT NULL, + `teamRating` int(11) NOT NULL, + `damageDone` int(11) NOT NULL, + `deaths` int(11) NOT NULL, + `healingDone` int(11) NOT NULL, + `damageTaken` int(11) NOT NULL, + `healingTaken` int(11) NOT NULL, + `killingBlows` int(11) NOT NULL, + `mapId` int(11) NOT NULL, + `start` int(11) NOT NULL, + `end` int(11) NOT NULL, + PRIMARY KEY (`gameid`,`teamid`,`guid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='WoWArmory Game Chart'; \ No newline at end of file diff --git a/sql/SQL Custom/npc-transmogrification.sql b/sql/SQL Custom/npc-transmogrification.sql new file mode 100644 index 0000000..12628ec --- /dev/null +++ b/sql/SQL Custom/npc-transmogrification.sql @@ -0,0 +1,16 @@ + + +INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `Armor_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`, `WDBVerified`) VALUES +(100093, 0, 0, 0, 0, 0, 19646, 0, 0, 0, 'Tisse-dimensions Hashom', 'Transmogrifieur', '', 0, 80, 80, 2, 35, 35, 1, 1, 1.14286, 1, 0, 500, 500, 0, 350, 1, 2000, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 'NPC_Transmogrify', 0); + + + + + + + + + + + + diff --git a/sql/SQL Custom/transmogrification-characters.sql b/sql/SQL Custom/transmogrification-characters.sql new file mode 100644 index 0000000..66b13e6 --- /dev/null +++ b/sql/SQL Custom/transmogrification-characters.sql @@ -0,0 +1,9 @@ +CREATE TABLE `custom_transmogrification` ( + `GUID` INT(10) UNSIGNED NOT NULL COMMENT 'Item guidLow', + `FakeEntry` INT(10) UNSIGNED NOT NULL COMMENT 'Item entry', + `Owner` INT(10) UNSIGNED NOT NULL COMMENT 'Player guidLow', + PRIMARY KEY (`GUID`) +) +COMMENT='version 4.0' +COLLATE='latin1_swedish_ci' +ENGINE=InnoDB; diff --git a/sql/SQL Custom/trinit_string_transmogification.sql b/sql/SQL Custom/trinit_string_transmogification.sql new file mode 100644 index 0000000..9ecd546 --- /dev/null +++ b/sql/SQL Custom/trinit_string_transmogification.sql @@ -0,0 +1,32 @@ +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES +(11129, 'You don''t have enough %ss', NULL, 'Tu n''as pas assez de %ss', NULL, NULL, NULL, NULL, NULL, NULL), +(11128, 'Using this item for transmogrify will bind it to you and make it non-refundable and non-tradeable.\r\nDo you wish to continue?\r\n\r\n', NULL, 'L''utilisation de cette item pour la transmogrification, va le lié à vous le rendant non-remboursables et non échangeables.\r\n\r\nVoulez-vous continuer?', NULL, NULL, NULL, NULL, NULL, NULL), +(11127, 'Remove transmogrification from %s?', NULL, 'Supprimer la transmogrification pour %s?', NULL, NULL, NULL, NULL, NULL, NULL), +(11126, 'Remove transmogrification', NULL, 'Supprimer la transmogrification', NULL, NULL, NULL, NULL, NULL, NULL), +(11125, 'Update menu', NULL, 'Mise à jour Menu', NULL, NULL, NULL, NULL, NULL, NULL), +(11124, 'Remove transmogrifications from all equipped items?', NULL, 'Supprimer les transmogrifications de tous les items équipés?', NULL, NULL, NULL, NULL, NULL, NULL), +(11123, 'Remove all transmogrifications', NULL, 'Supprimer toutes les transmogrifications', NULL, NULL, NULL, NULL, NULL, NULL), +(11122, 'Back..', NULL, 'Retour..', NULL, NULL, NULL, NULL, NULL, NULL), +(11121, 'Tabard', NULL, 'Tabard', NULL, NULL, NULL, NULL, NULL, NULL), +(11120, 'Ranged', NULL, 'À distance', NULL, NULL, NULL, NULL, NULL, NULL), +(11119, 'Off hand', NULL, 'Main Gauche', NULL, NULL, NULL, NULL, NULL, NULL), +(11118, 'Main hand', NULL, 'Main Droite', NULL, NULL, NULL, NULL, NULL, NULL), +(11117, 'Back', NULL, 'Retour', NULL, NULL, NULL, NULL, NULL, NULL), +(11116, 'Hands', NULL, 'Deux Mains', NULL, NULL, NULL, NULL, NULL, NULL), +(11115, 'Wrists', NULL, 'Poignets', NULL, NULL, NULL, NULL, NULL, NULL), +(11114, 'Feet', NULL, 'Pieds', NULL, NULL, NULL, NULL, NULL, NULL), +(11113, 'Legs', NULL, 'Jambes', NULL, NULL, NULL, NULL, NULL, NULL), +(11112, 'Waist', NULL, 'Ceinture', NULL, NULL, NULL, NULL, NULL, NULL), +(11111, 'Chest', NULL, 'Torse', NULL, NULL, NULL, NULL, NULL, NULL), +(11110, 'Shirt', NULL, 'Chemise', NULL, NULL, NULL, NULL, NULL, NULL), +(11109, 'Shoulders', NULL, 'Épaules', NULL, NULL, NULL, NULL, NULL, NULL), +(11108, 'Head', NULL, 'Tête', NULL, NULL, NULL, NULL, NULL, NULL), +(11107, 'Equipment slot is empty', NULL, 'L’emplacement d''équipement est vide', NULL, NULL, NULL, NULL, NULL, NULL), +(11106, 'Selected item does not exist', NULL, 'L''item sélectionné n''existe pas', NULL, NULL, NULL, NULL, NULL, NULL), +(11105, 'Selected items are not suitable', NULL, 'L''item sélectionné n''est pas appropriés', NULL, NULL, NULL, NULL, NULL, NULL), +(11104, '%s transmogrified', NULL, '%s transmogrifié', NULL, NULL, NULL, NULL, NULL, NULL), +(11103, 'No transmogrification on %s slot', NULL, 'Pas de transmogrification à l''emplacement %s', NULL, NULL, NULL, NULL, NULL, NULL), +(11102, '%s transmogrification removed', NULL, '%s transmogrification supprimé', NULL, NULL, NULL, NULL, NULL, NULL), +(11101, 'You have no transmogrified items equipped', NULL, 'Tu n''as pas d''items équipés à transmogrifié', NULL, NULL, NULL, NULL, NULL, NULL), +(11100, 'Transmogrifications removed from equipped items', NULL, 'Transmogrification supprimé sur les items équipés', NULL, NULL, NULL, NULL, NULL, NULL); + diff --git a/sql/UpdateSpellPpmRate.sql b/sql/UpdateSpellPpmRate.sql index 97755d7..dbeacd6 100644 --- a/sql/UpdateSpellPpmRate.sql +++ b/sql/UpdateSpellPpmRate.sql @@ -1,236 +1,236 @@ -UPDATE `item_template` SET `spellppmRate_1` = 1.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 647; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 754; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 809; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 810; -UPDATE `item_template` SET `spellppmRate_1` = 1.35, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 811; -UPDATE `item_template` SET `spellppmRate_1` = 1.6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 869; -UPDATE `item_template` SET `spellppmRate_1` = 3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 871; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 880; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 899; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 934; -UPDATE `item_template` SET `spellppmRate_1` = 1.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1265; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1318; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1387; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1481; -UPDATE `item_template` SET `spellppmRate_1` = 1.6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1482; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1726; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1727; -UPDATE `item_template` SET `spellppmRate_1` = 1.4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1728; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1982; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 1986; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2000; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2163; -UPDATE `item_template` SET `spellppmRate_1` = 1.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2164; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2205; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2243; -UPDATE `item_template` SET `spellppmRate_1` = 0.75, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2256; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2263; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2299; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2912; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2915; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 2942; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 3194; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 3822; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 0.8, `spellppmRate_3` = 0 WHERE `entry` = 3854; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 4090; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 4446; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 4449; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 5182; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 5426; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 5616; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 5752; -UPDATE `item_template` SET `spellppmRate_1` = 1.7, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 5756; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 5815; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 6220; -UPDATE `item_template` SET `spellppmRate_1` = 1.6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 6331; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 6472; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 6622; -UPDATE `item_template` SET `spellppmRate_1` = 2.6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 6660; -UPDATE `item_template` SET `spellppmRate_1` = 0.9, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 6738; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 6831; -UPDATE `item_template` SET `spellppmRate_1` = 2.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 6904; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 6909; -UPDATE `item_template` SET `spellppmRate_1` = 0.7, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 7717; -UPDATE `item_template` SET `spellppmRate_1` = 1.87, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 7730; -UPDATE `item_template` SET `spellppmRate_1` = 0.9, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 7753; -UPDATE `item_template` SET `spellppmRate_1` = 0.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 7954; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 7959; -UPDATE `item_template` SET `spellppmRate_1` = 1.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 7960; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 7961; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 8006; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 8190; -UPDATE `item_template` SET `spellppmRate_1` = 3.4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 8223; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 8224; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 8225; -UPDATE `item_template` SET `spellppmRate_1` = 2.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9372; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9386; -UPDATE `item_template` SET `spellppmRate_1` = 1.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9418; -UPDATE `item_template` SET `spellppmRate_1` = 2.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9419; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9423; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9425; -UPDATE `item_template` SET `spellppmRate_1` = 1.75, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9446; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9453; -UPDATE `item_template` SET `spellppmRate_1` = 3.9, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9465; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9467; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9475; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9478; -UPDATE `item_template` SET `spellppmRate_1` = 3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9485; -UPDATE `item_template` SET `spellppmRate_1` = 0.9, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9486; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9511; -UPDATE `item_template` SET `spellppmRate_1` = 1.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9608; -UPDATE `item_template` SET `spellppmRate_1` = 1.1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9639; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 9651; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10623; -UPDATE `item_template` SET `spellppmRate_1` = 3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10625; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10626; -UPDATE `item_template` SET `spellppmRate_1` = 1.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10628; -UPDATE `item_template` SET `spellppmRate_1` = 3.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10761; -UPDATE `item_template` SET `spellppmRate_1` = 1.7, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10772; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10797; -UPDATE `item_template` SET `spellppmRate_1` = 1.7, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10803; -UPDATE `item_template` SET `spellppmRate_1` = 1.1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10804; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 10847; -UPDATE `item_template` SET `spellppmRate_1` = -1, `spellppmRate_2` = 1.2, `spellppmRate_3` = 0 WHERE `entry` = 11086; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11121; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11603; -UPDATE `item_template` SET `spellppmRate_1` = 0.9, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11607; -UPDATE `item_template` SET `spellppmRate_1` = 0.18, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11608; -UPDATE `item_template` SET `spellppmRate_1` = 1.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11635; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11684; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11744; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11803; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11809; -UPDATE `item_template` SET `spellppmRate_1` = 1.6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11817; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11902; -UPDATE `item_template` SET `spellppmRate_1` = 1.4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 11920; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12243; -UPDATE `item_template` SET `spellppmRate_1` = 1.1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12250; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12463; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12528; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12531; -UPDATE `item_template` SET `spellppmRate_1` = 1.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12582; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12583; -UPDATE `item_template` SET `spellppmRate_1` = 1.7, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12590; -UPDATE `item_template` SET `spellppmRate_1` = 0.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12592; -UPDATE `item_template` SET `spellppmRate_1` = 1.4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12621; -UPDATE `item_template` SET `spellppmRate_1` = 1.7, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12777; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12781; -UPDATE `item_template` SET `spellppmRate_1` = 1.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12790; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12791; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12792; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12794; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12796; -UPDATE `item_template` SET `spellppmRate_1` = 1.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12797; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12798; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12969; -UPDATE `item_template` SET `spellppmRate_1` = 1.35, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12974; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 12992; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13016; -UPDATE `item_template` SET `spellppmRate_1` = 1.4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13032; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13035; -UPDATE `item_template` SET `spellppmRate_1` = 1.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13051; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13053; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13054; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13057; -UPDATE `item_template` SET `spellppmRate_1` = 1.7, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13060; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13148; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13183; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13198; -UPDATE `item_template` SET `spellppmRate_1` = 2.1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13204; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13218; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13246; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13262; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13285; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13286; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13348; -UPDATE `item_template` SET `spellppmRate_1` = 1.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13361; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13393; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13399; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13401; -UPDATE `item_template` SET `spellppmRate_1` = 1.1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13408; -UPDATE `item_template` SET `spellppmRate_1` = 3.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13953; -UPDATE `item_template` SET `spellppmRate_1` = 0.6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13983; -UPDATE `item_template` SET `spellppmRate_1` = 1.9, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 13984; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 14024; -UPDATE `item_template` SET `spellppmRate_1` = 1.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 14145; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 14487; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 14531; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 14541; -UPDATE `item_template` SET `spellppmRate_1` = 3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 14555; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 14576; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 15418; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 15814; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 15853; -UPDATE `item_template` SET `spellppmRate_1` = 0.6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17002; -UPDATE `item_template` SET `spellppmRate_1` = 1.4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17054; -UPDATE `item_template` SET `spellppmRate_1` = -4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17068; -UPDATE `item_template` SET `spellppmRate_1` = 2.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17071; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17073; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17074; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17075; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17076; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17112; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 1, `spellppmRate_3` = 0 WHERE `entry` = 17182; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17193; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17223; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17704; -UPDATE `item_template` SET `spellppmRate_1` = 1.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17705; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17730; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17733; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17738; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17752; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17766; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 17943; -UPDATE `item_template` SET `spellppmRate_1` = 2.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 18202; -UPDATE `item_template` SET `spellppmRate_1` = 2.4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 18203; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 18348; -UPDATE `item_template` SET `spellppmRate_1` = 0.6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 18410; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 18671; -UPDATE `item_template` SET `spellppmRate_1` = 2.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 18816; -UPDATE `item_template` SET `spellppmRate_1` = 4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19019; -UPDATE `item_template` SET `spellppmRate_1` = 1.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19099; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19100; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19166; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19169; -UPDATE `item_template` SET `spellppmRate_1` = 1.1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19170; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 1, `spellppmRate_3` = 0 WHERE `entry` = 19323; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19324; -UPDATE `item_template` SET `spellppmRate_1` = 1.4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19334; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19852; -UPDATE `item_template` SET `spellppmRate_1` = 1.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19901; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 1.5, `spellppmRate_3` = 0 WHERE `entry` = 19908; -UPDATE `item_template` SET `spellppmRate_1` = 3.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19910; -UPDATE `item_template` SET `spellppmRate_1` = 3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 19918; -UPDATE `item_template` SET `spellppmRate_1` = 2.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 20578; -UPDATE `item_template` SET `spellppmRate_1` = 1.7, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 21134; -UPDATE `item_template` SET `spellppmRate_1` = 1.75, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 21679; -UPDATE `item_template` SET `spellppmRate_1` = 1.3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 21856; -UPDATE `item_template` SET `spellppmRate_1` = 1.9, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 27901; -UPDATE `item_template` SET `spellppmRate_1` = 0.8, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28164; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28253 ; -UPDATE `item_template` SET `spellppmRate_1` = 1.9, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28311; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28367; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28437; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28438; -UPDATE `item_template` SET `spellppmRate_1` = 1.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28439; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28441; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28442; -UPDATE `item_template` SET `spellppmRate_1` = 0.65, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28573; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28584; -UPDATE `item_template` SET `spellppmRate_1` = 1.6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 28774; -UPDATE `item_template` SET `spellppmRate_1` = 2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 29182; -UPDATE `item_template` SET `spellppmRate_1` = 3, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 29348; -UPDATE `item_template` SET `spellppmRate_1` = 2.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 29962; -UPDATE `item_template` SET `spellppmRate_1` = 6, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 29996; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 30090; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 1, `spellppmRate_3` = 0 WHERE `entry` = 30311; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 2, `spellppmRate_3` = 0 WHERE `entry` = 30312; -UPDATE `item_template` SET `spellppmRate_1` = 4.2, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 31193; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 31318; -UPDATE `item_template` SET `spellppmRate_1` = 2.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 31322; -UPDATE `item_template` SET `spellppmRate_1` = 2.4, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 31331; -UPDATE `item_template` SET `spellppmRate_1` = 1.54, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 31332; -UPDATE `item_template` SET `spellppmRate_1` = 0, `spellppmRate_2` = 1, `spellppmRate_3` = 0 WHERE `entry` = 32262; -UPDATE `item_template` SET `spellppmRate_1` = 0.5, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 32471; -UPDATE `item_template` SET `spellppmRate_1` = 1, `spellppmRate_2` = 0, `spellppmRate_3` = 0 WHERE `entry` = 39371; +UPDATE `item_template` SET `spellppmRate_1` = '1,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 647; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 754; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 809; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 810; +UPDATE `item_template` SET `spellppmRate_1` = '1,35', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 811; +UPDATE `item_template` SET `spellppmRate_1` = '1,6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 869; +UPDATE `item_template` SET `spellppmRate_1` = '3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 871; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 880; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 899; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 934; +UPDATE `item_template` SET `spellppmRate_1` = '1,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1265; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1318; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1387; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1481; +UPDATE `item_template` SET `spellppmRate_1` = '1,6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1482; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1726; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1727; +UPDATE `item_template` SET `spellppmRate_1` = '1,4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1728; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1982; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 1986; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2000; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2163; +UPDATE `item_template` SET `spellppmRate_1` = '1,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2164; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2205; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2243; +UPDATE `item_template` SET `spellppmRate_1` = '0,75', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2256; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2263; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2299; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2912; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2915; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 2942; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 3194; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 3822; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '0,8', `spellppmRate_3` = '0' WHERE `entry` = 3854; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 4090; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 4446; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 4449; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 5182; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 5426; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 5616; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 5752; +UPDATE `item_template` SET `spellppmRate_1` = '1,7', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 5756; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 5815; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 6220; +UPDATE `item_template` SET `spellppmRate_1` = '1,6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 6331; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 6472; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 6622; +UPDATE `item_template` SET `spellppmRate_1` = '2,6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 6660; +UPDATE `item_template` SET `spellppmRate_1` = '0,9', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 6738; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 6831; +UPDATE `item_template` SET `spellppmRate_1` = '2,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 6904; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 6909; +UPDATE `item_template` SET `spellppmRate_1` = '0,7', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 7717; +UPDATE `item_template` SET `spellppmRate_1` = '1,87', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 7730; +UPDATE `item_template` SET `spellppmRate_1` = '0,9', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 7753; +UPDATE `item_template` SET `spellppmRate_1` = '0,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 7954; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 7959; +UPDATE `item_template` SET `spellppmRate_1` = '1,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 7960; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 7961; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 8006; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 8190; +UPDATE `item_template` SET `spellppmRate_1` = '3,4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 8223; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 8224; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 8225; +UPDATE `item_template` SET `spellppmRate_1` = '2,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9372; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9386; +UPDATE `item_template` SET `spellppmRate_1` = '1,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9418; +UPDATE `item_template` SET `spellppmRate_1` = '2,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9419; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9423; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9425; +UPDATE `item_template` SET `spellppmRate_1` = '1,75', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9446; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9453; +UPDATE `item_template` SET `spellppmRate_1` = '3,9', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9465; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9467; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9475; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9478; +UPDATE `item_template` SET `spellppmRate_1` = '3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9485; +UPDATE `item_template` SET `spellppmRate_1` = '0,9', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9486; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9511; +UPDATE `item_template` SET `spellppmRate_1` = '1,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9608; +UPDATE `item_template` SET `spellppmRate_1` = '1,1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9639; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 9651; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10623; +UPDATE `item_template` SET `spellppmRate_1` = '3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10625; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10626; +UPDATE `item_template` SET `spellppmRate_1` = '1,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10628; +UPDATE `item_template` SET `spellppmRate_1` = '3,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10761; +UPDATE `item_template` SET `spellppmRate_1` = '1,7', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10772; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10797; +UPDATE `item_template` SET `spellppmRate_1` = '1,7', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10803; +UPDATE `item_template` SET `spellppmRate_1` = '1,1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10804; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 10847; +UPDATE `item_template` SET `spellppmRate_1` = '-1', `spellppmRate_2` = '1,2', `spellppmRate_3` = '0' WHERE `entry` = 11086; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11121; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11603; +UPDATE `item_template` SET `spellppmRate_1` = '0,9', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11607; +UPDATE `item_template` SET `spellppmRate_1` = '0,18', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11608; +UPDATE `item_template` SET `spellppmRate_1` = '1,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11635; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11684; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11744; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11803; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11809; +UPDATE `item_template` SET `spellppmRate_1` = '1,6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11817; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11902; +UPDATE `item_template` SET `spellppmRate_1` = '1,4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 11920; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12243; +UPDATE `item_template` SET `spellppmRate_1` = '1,1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12250; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12463; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12528; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12531; +UPDATE `item_template` SET `spellppmRate_1` = '1,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12582; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12583; +UPDATE `item_template` SET `spellppmRate_1` = '1,7', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12590; +UPDATE `item_template` SET `spellppmRate_1` = '0,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12592; +UPDATE `item_template` SET `spellppmRate_1` = '1,4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12621; +UPDATE `item_template` SET `spellppmRate_1` = '1,7', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12777; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12781; +UPDATE `item_template` SET `spellppmRate_1` = '1,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12790; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12791; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12792; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12794; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12796; +UPDATE `item_template` SET `spellppmRate_1` = '1,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12797; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12798; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12969; +UPDATE `item_template` SET `spellppmRate_1` = '1,35', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12974; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 12992; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13016; +UPDATE `item_template` SET `spellppmRate_1` = '1,4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13032; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13035; +UPDATE `item_template` SET `spellppmRate_1` = '1,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13051; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13053; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13054; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13057; +UPDATE `item_template` SET `spellppmRate_1` = '1,7', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13060; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13148; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13183; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13198; +UPDATE `item_template` SET `spellppmRate_1` = '2,1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13204; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13218; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13246; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13262; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13285; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13286; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13348; +UPDATE `item_template` SET `spellppmRate_1` = '1,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13361; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13393; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13399; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13401; +UPDATE `item_template` SET `spellppmRate_1` = '1,1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13408; +UPDATE `item_template` SET `spellppmRate_1` = '3,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13953; +UPDATE `item_template` SET `spellppmRate_1` = '0,6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13983; +UPDATE `item_template` SET `spellppmRate_1` = '1,9', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 13984; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 14024; +UPDATE `item_template` SET `spellppmRate_1` = '1,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 14145; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 14487; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 14531; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 14541; +UPDATE `item_template` SET `spellppmRate_1` = '3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 14555; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 14576; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 15418; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 15814; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 15853; +UPDATE `item_template` SET `spellppmRate_1` = '0,6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17002; +UPDATE `item_template` SET `spellppmRate_1` = '1,4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17054; +UPDATE `item_template` SET `spellppmRate_1` = '-4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17068; +UPDATE `item_template` SET `spellppmRate_1` = '2,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17071; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17073; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17074; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17075; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17076; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17112; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '1', `spellppmRate_3` = '0' WHERE `entry` = 17182; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17193; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17223; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17704; +UPDATE `item_template` SET `spellppmRate_1` = '1,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17705; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17730; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17733; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17738; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17752; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17766; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 17943; +UPDATE `item_template` SET `spellppmRate_1` = '2,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 18202; +UPDATE `item_template` SET `spellppmRate_1` = '2,4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 18203; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 18348; +UPDATE `item_template` SET `spellppmRate_1` = '0,6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 18410; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 18671; +UPDATE `item_template` SET `spellppmRate_1` = '2,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 18816; +UPDATE `item_template` SET `spellppmRate_1` = '4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19019; +UPDATE `item_template` SET `spellppmRate_1` = '1,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19099; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19100; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19166; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19169; +UPDATE `item_template` SET `spellppmRate_1` = '1,1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19170; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '1', `spellppmRate_3` = '0' WHERE `entry` = 19323; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19324; +UPDATE `item_template` SET `spellppmRate_1` = '1,4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19334; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19852; +UPDATE `item_template` SET `spellppmRate_1` = '1,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19901; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '1,5', `spellppmRate_3` = '0' WHERE `entry` = 19908; +UPDATE `item_template` SET `spellppmRate_1` = '3,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19910; +UPDATE `item_template` SET `spellppmRate_1` = '3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 19918; +UPDATE `item_template` SET `spellppmRate_1` = '2,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 20578; +UPDATE `item_template` SET `spellppmRate_1` = '1,7', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 21134; +UPDATE `item_template` SET `spellppmRate_1` = '1,75', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 21679; +UPDATE `item_template` SET `spellppmRate_1` = '1,3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 21856; +UPDATE `item_template` SET `spellppmRate_1` = '1,9', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 27901; +UPDATE `item_template` SET `spellppmRate_1` = '0,8', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28164; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28253 ; +UPDATE `item_template` SET `spellppmRate_1` = '1,9', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28311; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28367; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28437; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28438; +UPDATE `item_template` SET `spellppmRate_1` = '1,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28439; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28441; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28442; +UPDATE `item_template` SET `spellppmRate_1` = '0,65', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28573; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28584; +UPDATE `item_template` SET `spellppmRate_1` = '1,6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 28774; +UPDATE `item_template` SET `spellppmRate_1` = '2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 29182; +UPDATE `item_template` SET `spellppmRate_1` = '3', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 29348; +UPDATE `item_template` SET `spellppmRate_1` = '2,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 29962; +UPDATE `item_template` SET `spellppmRate_1` = '6', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 29996; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 30090; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '1', `spellppmRate_3` = '0' WHERE `entry` = 30311; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '2', `spellppmRate_3` = '0' WHERE `entry` = 30312; +UPDATE `item_template` SET `spellppmRate_1` = '4,2', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 31193; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 31318; +UPDATE `item_template` SET `spellppmRate_1` = '2,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 31322; +UPDATE `item_template` SET `spellppmRate_1` = '2,4', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 31331; +UPDATE `item_template` SET `spellppmRate_1` = '1,54', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 31332; +UPDATE `item_template` SET `spellppmRate_1` = '0', `spellppmRate_2` = '1', `spellppmRate_3` = '0' WHERE `entry` = 32262; +UPDATE `item_template` SET `spellppmRate_1` = '0,5', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 32471; +UPDATE `item_template` SET `spellppmRate_1` = '1', `spellppmRate_2` = '0', `spellppmRate_3` = '0' WHERE `entry` = 39371; diff --git a/src/genrev/CMakeLists.txt b/src/genrev/CMakeLists.txt index 9f7bf23..b931daa 100644 --- a/src/genrev/CMakeLists.txt +++ b/src/genrev/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Authentication/AuthCodes.cpp b/src/server/authserver/Authentication/AuthCodes.cpp index 803f837..767e7a7 100644 --- a/src/server/authserver/Authentication/AuthCodes.cpp +++ b/src/server/authserver/Authentication/AuthCodes.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Authentication/AuthCodes.h b/src/server/authserver/Authentication/AuthCodes.h index a97fa8d..10a9e30 100644 --- a/src/server/authserver/Authentication/AuthCodes.h +++ b/src/server/authserver/Authentication/AuthCodes.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -58,7 +58,7 @@ enum LoginResult LOGIN_LOCKED_ENFORCED = 0x10, }; -#define POST_BC_ACCEPTED_CLIENT_BUILD {12340, 11723, 11403, 11159, 10571, 10505, 10146, 9947, 8606, 0} +#define POST_BC_ACCEPTED_CLIENT_BUILD {15595, 14545, 13623, 12340, 11723, 11403, 11159, 10571, 10505, 10146, 9947, 8606, 0} #define PRE_BC_ACCEPTED_CLIENT_BUILD {5875, 6005, 0} enum ExpansionFlags diff --git a/src/server/authserver/CMakeLists.txt b/src/server/authserver/CMakeLists.txt index aa6141e..5ff63fe 100644 --- a/src/server/authserver/CMakeLists.txt +++ b/src/server/authserver/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index 32f58ff..836d6de 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/PrecompiledHeaders/authPCH.cpp b/src/server/authserver/PrecompiledHeaders/authPCH.cpp index 912a23e..7deb2c4 100644 --- a/src/server/authserver/PrecompiledHeaders/authPCH.cpp +++ b/src/server/authserver/PrecompiledHeaders/authPCH.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/PrecompiledHeaders/authPCH.h b/src/server/authserver/PrecompiledHeaders/authPCH.h index 69e2d15..081db44 100644 --- a/src/server/authserver/PrecompiledHeaders/authPCH.h +++ b/src/server/authserver/PrecompiledHeaders/authPCH.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Realms/RealmList.cpp b/src/server/authserver/Realms/RealmList.cpp index d7eae92..652edba 100644 --- a/src/server/authserver/Realms/RealmList.cpp +++ b/src/server/authserver/Realms/RealmList.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Realms/RealmList.h b/src/server/authserver/Realms/RealmList.h index 6f4f9e7..99d142f 100644 --- a/src/server/authserver/Realms/RealmList.h +++ b/src/server/authserver/Realms/RealmList.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Server/AuthSocket.cpp b/src/server/authserver/Server/AuthSocket.cpp index 0ec1162..4cd6779 100644 --- a/src/server/authserver/Server/AuthSocket.cpp +++ b/src/server/authserver/Server/AuthSocket.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Server/AuthSocket.h b/src/server/authserver/Server/AuthSocket.h index 4e9ac94..d919646 100644 --- a/src/server/authserver/Server/AuthSocket.h +++ b/src/server/authserver/Server/AuthSocket.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Server/RealmAcceptor.h b/src/server/authserver/Server/RealmAcceptor.h index d9d710f..8dae885 100644 --- a/src/server/authserver/Server/RealmAcceptor.h +++ b/src/server/authserver/Server/RealmAcceptor.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Server/RealmSocket.cpp b/src/server/authserver/Server/RealmSocket.cpp index 02928fb..54bb857 100644 --- a/src/server/authserver/Server/RealmSocket.cpp +++ b/src/server/authserver/Server/RealmSocket.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/Server/RealmSocket.h b/src/server/authserver/Server/RealmSocket.h index e9d1147..d6bfd3c 100644 --- a/src/server/authserver/Server/RealmSocket.h +++ b/src/server/authserver/Server/RealmSocket.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/authserver/authserver.rc b/src/server/authserver/authserver.rc index 2f55897..bf5eac5 100644 --- a/src/server/authserver/authserver.rc +++ b/src/server/authserver/authserver.rc @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/authserver/resource.h b/src/server/authserver/resource.h index 09af362..40c6b75 100644 --- a/src/server/authserver/resource.h +++ b/src/server/authserver/resource.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/collision/BoundingIntervalHierarchy.h b/src/server/collision/BoundingIntervalHierarchy.h index bb9250b..b038cb7 100644 --- a/src/server/collision/BoundingIntervalHierarchy.h +++ b/src/server/collision/BoundingIntervalHierarchy.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/CMakeLists.txt b/src/server/collision/CMakeLists.txt index 9c19634..bfa7de1 100644 --- a/src/server/collision/CMakeLists.txt +++ b/src/server/collision/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/collision/Management/IVMapManager.h b/src/server/collision/Management/IVMapManager.h index 95fa9c3..664c0c7 100644 --- a/src/server/collision/Management/IVMapManager.h +++ b/src/server/collision/Management/IVMapManager.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Management/VMapFactory.cpp b/src/server/collision/Management/VMapFactory.cpp index 3368e81..b34b53c 100644 --- a/src/server/collision/Management/VMapFactory.cpp +++ b/src/server/collision/Management/VMapFactory.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Management/VMapFactory.h b/src/server/collision/Management/VMapFactory.h index 29b45e4..ea1e79a 100644 --- a/src/server/collision/Management/VMapFactory.h +++ b/src/server/collision/Management/VMapFactory.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Management/VMapManager2.cpp b/src/server/collision/Management/VMapManager2.cpp index 5a03ff2..4d6201d 100644 --- a/src/server/collision/Management/VMapManager2.cpp +++ b/src/server/collision/Management/VMapManager2.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008-2012 TrinityCore * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/collision/Management/VMapManager2.h b/src/server/collision/Management/VMapManager2.h index de7f774..d5def11 100644 --- a/src/server/collision/Management/VMapManager2.h +++ b/src/server/collision/Management/VMapManager2.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Maps/MapTree.cpp b/src/server/collision/Maps/MapTree.cpp index ca6d1e3..442498f 100644 --- a/src/server/collision/Maps/MapTree.cpp +++ b/src/server/collision/Maps/MapTree.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Maps/MapTree.h b/src/server/collision/Maps/MapTree.h index e522883..e049773 100644 --- a/src/server/collision/Maps/MapTree.h +++ b/src/server/collision/Maps/MapTree.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Maps/TileAssembler.cpp b/src/server/collision/Maps/TileAssembler.cpp index cd8d930..9de295c 100644 --- a/src/server/collision/Maps/TileAssembler.cpp +++ b/src/server/collision/Maps/TileAssembler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Maps/TileAssembler.h b/src/server/collision/Maps/TileAssembler.h index b37f8d1..54d719a 100644 --- a/src/server/collision/Maps/TileAssembler.h +++ b/src/server/collision/Maps/TileAssembler.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Models/GameObjectModel.cpp b/src/server/collision/Models/GameObjectModel.cpp index ed4f828..f70f97b 100644 --- a/src/server/collision/Models/GameObjectModel.cpp +++ b/src/server/collision/Models/GameObjectModel.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Models/ModelInstance.h b/src/server/collision/Models/ModelInstance.h index fbdb803..9bac4d5 100644 --- a/src/server/collision/Models/ModelInstance.h +++ b/src/server/collision/Models/ModelInstance.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Models/WorldModel.cpp b/src/server/collision/Models/WorldModel.cpp index 9539c82..43ab8e2 100644 --- a/src/server/collision/Models/WorldModel.cpp +++ b/src/server/collision/Models/WorldModel.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/Models/WorldModel.h b/src/server/collision/Models/WorldModel.h index 4a00bfb..5e903c3 100644 --- a/src/server/collision/Models/WorldModel.h +++ b/src/server/collision/Models/WorldModel.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/collision/PrecompiledHeaders/collisionPCH.cpp b/src/server/collision/PrecompiledHeaders/collisionPCH.cpp index 4f44b93..208958f 100644 --- a/src/server/collision/PrecompiledHeaders/collisionPCH.cpp +++ b/src/server/collision/PrecompiledHeaders/collisionPCH.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/collision/PrecompiledHeaders/collisionPCH.h b/src/server/collision/PrecompiledHeaders/collisionPCH.h index 416417f..8680955 100644 --- a/src/server/collision/PrecompiledHeaders/collisionPCH.h +++ b/src/server/collision/PrecompiledHeaders/collisionPCH.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/collision/VMapDefinitions.h b/src/server/collision/VMapDefinitions.h index 438e1b6..dcec34f 100644 --- a/src/server/collision/VMapDefinitions.h +++ b/src/server/collision/VMapDefinitions.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/CombatAI.cpp b/src/server/game/AI/CoreAI/CombatAI.cpp index a19c184..dac7e8b 100644 --- a/src/server/game/AI/CoreAI/CombatAI.cpp +++ b/src/server/game/AI/CoreAI/CombatAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/CombatAI.h b/src/server/game/AI/CoreAI/CombatAI.h index 4528509..2d74d0d 100644 --- a/src/server/game/AI/CoreAI/CombatAI.h +++ b/src/server/game/AI/CoreAI/CombatAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/GameObjectAI.cpp b/src/server/game/AI/CoreAI/GameObjectAI.cpp index f3aba26..cde8a7f 100644 --- a/src/server/game/AI/CoreAI/GameObjectAI.cpp +++ b/src/server/game/AI/CoreAI/GameObjectAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h index bae3a0e..0891bc7 100644 --- a/src/server/game/AI/CoreAI/GameObjectAI.h +++ b/src/server/game/AI/CoreAI/GameObjectAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/GuardAI.cpp b/src/server/game/AI/CoreAI/GuardAI.cpp index 353295a..5ff7b32 100644 --- a/src/server/game/AI/CoreAI/GuardAI.cpp +++ b/src/server/game/AI/CoreAI/GuardAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/GuardAI.h b/src/server/game/AI/CoreAI/GuardAI.h index 72bab48..edf6268 100644 --- a/src/server/game/AI/CoreAI/GuardAI.h +++ b/src/server/game/AI/CoreAI/GuardAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/PassiveAI.cpp b/src/server/game/AI/CoreAI/PassiveAI.cpp index 8985328..ed02679 100644 --- a/src/server/game/AI/CoreAI/PassiveAI.cpp +++ b/src/server/game/AI/CoreAI/PassiveAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/PassiveAI.h b/src/server/game/AI/CoreAI/PassiveAI.h index e5074ba..0d85f39 100644 --- a/src/server/game/AI/CoreAI/PassiveAI.h +++ b/src/server/game/AI/CoreAI/PassiveAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp index c8ee6c5..cbccc2d 100644 --- a/src/server/game/AI/CoreAI/PetAI.cpp +++ b/src/server/game/AI/CoreAI/PetAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/PetAI.h b/src/server/game/AI/CoreAI/PetAI.h index 552481b..e68856e 100644 --- a/src/server/game/AI/CoreAI/PetAI.h +++ b/src/server/game/AI/CoreAI/PetAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/ReactorAI.cpp b/src/server/game/AI/CoreAI/ReactorAI.cpp index 159f34d..627a5ae 100644 --- a/src/server/game/AI/CoreAI/ReactorAI.cpp +++ b/src/server/game/AI/CoreAI/ReactorAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/ReactorAI.h b/src/server/game/AI/CoreAI/ReactorAI.h index 3ddd3e6..0940c0c 100644 --- a/src/server/game/AI/CoreAI/ReactorAI.h +++ b/src/server/game/AI/CoreAI/ReactorAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/TotemAI.cpp b/src/server/game/AI/CoreAI/TotemAI.cpp index 1e75c98..4c8aaa3 100644 --- a/src/server/game/AI/CoreAI/TotemAI.cpp +++ b/src/server/game/AI/CoreAI/TotemAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/TotemAI.h b/src/server/game/AI/CoreAI/TotemAI.h index cee0482..ce0d2d9 100644 --- a/src/server/game/AI/CoreAI/TotemAI.h +++ b/src/server/game/AI/CoreAI/TotemAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp index e56c575..0472f17 100644 --- a/src/server/game/AI/CoreAI/UnitAI.cpp +++ b/src/server/game/AI/CoreAI/UnitAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -237,3 +237,14 @@ void SimpleCharmedAI::UpdateAI(const uint32 /*diff*/) if(!target || !charmer->canAttack(target)) AttackStart(charmer->SelectNearestTargetInAttackDistance()); } + +bool NonTankTargetSelector::operator()(Unit const* target) const +{ + if(!target) + return false; + + if(_playerOnly && target->GetTypeId() != TYPEID_PLAYER) + return false; + + return target != _source->getVictim(); +} diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index 4c4561e..934b3b9 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -106,6 +106,17 @@ struct DefaultTargetSelector : public std::unary_function } }; +struct NonTankTargetSelector : public std::unary_function +{ +public: + NonTankTargetSelector(Creature* source, bool playerOnly = true) : _source(source), _playerOnly(playerOnly) { } + bool operator()(Unit const* target) const; + +private: + Creature const* _source; + bool _playerOnly; +}; + class UnitAI { protected: diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index d491259..89dfcb9 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h index 5b6ca9c..c53dfab 100644 --- a/src/server/game/AI/CreatureAI.h +++ b/src/server/game/AI/CreatureAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CreatureAIFactory.h b/src/server/game/AI/CreatureAIFactory.h index d4097e0..ab469be 100644 --- a/src/server/game/AI/CreatureAIFactory.h +++ b/src/server/game/AI/CreatureAIFactory.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CreatureAIImpl.h b/src/server/game/AI/CreatureAIImpl.h index e0dbe9b..79ec2d0 100644 --- a/src/server/game/AI/CreatureAIImpl.h +++ b/src/server/game/AI/CreatureAIImpl.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CreatureAIRegistry.cpp b/src/server/game/AI/CreatureAIRegistry.cpp index b13e8ed..a617b2c 100644 --- a/src/server/game/AI/CreatureAIRegistry.cpp +++ b/src/server/game/AI/CreatureAIRegistry.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CreatureAIRegistry.h b/src/server/game/AI/CreatureAIRegistry.h index 3275947..eb45a39 100644 --- a/src/server/game/AI/CreatureAIRegistry.h +++ b/src/server/game/AI/CreatureAIRegistry.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp index 9b69449..424154a 100644 --- a/src/server/game/AI/CreatureAISelector.cpp +++ b/src/server/game/AI/CreatureAISelector.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/CreatureAISelector.h b/src/server/game/AI/CreatureAISelector.h index e49ce1b..d979e3c 100644 --- a/src/server/game/AI/CreatureAISelector.h +++ b/src/server/game/AI/CreatureAISelector.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/EventAI/CreatureEventAI.cpp b/src/server/game/AI/EventAI/CreatureEventAI.cpp index 713537a..986bf2e 100644 --- a/src/server/game/AI/EventAI/CreatureEventAI.cpp +++ b/src/server/game/AI/EventAI/CreatureEventAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/EventAI/CreatureEventAI.h b/src/server/game/AI/EventAI/CreatureEventAI.h index 52f178d..13e1b5d 100644 --- a/src/server/game/AI/EventAI/CreatureEventAI.h +++ b/src/server/game/AI/EventAI/CreatureEventAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/EventAI/CreatureEventAIMgr.cpp b/src/server/game/AI/EventAI/CreatureEventAIMgr.cpp index 2f30afd..1a9bad8 100644 --- a/src/server/game/AI/EventAI/CreatureEventAIMgr.cpp +++ b/src/server/game/AI/EventAI/CreatureEventAIMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/EventAI/CreatureEventAIMgr.h b/src/server/game/AI/EventAI/CreatureEventAIMgr.h index 69e7deb..521ce67 100644 --- a/src/server/game/AI/EventAI/CreatureEventAIMgr.h +++ b/src/server/game/AI/EventAI/CreatureEventAIMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index 7f74e79..e327e2a 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index 9b64614..165fce6 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp index 8949100..06fae14 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h index 376f6e0..77c2666 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp index d546900..99d8cad 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h index e988803..25139dc 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h +++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/ScriptedGossip.h b/src/server/game/AI/ScriptedAI/ScriptedGossip.h index 3054eae..52b0f87 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedGossip.h +++ b/src/server/game/AI/ScriptedAI/ScriptedGossip.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.cpp index 6730f76..3c0817e 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.h b/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.h index 66d42f5..ea1de74 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.h +++ b/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/ScriptedAI/sc_npc_teleport.cpp b/src/server/game/AI/ScriptedAI/sc_npc_teleport.cpp new file mode 100644 index 0000000..82bceba --- /dev/null +++ b/src/server/game/AI/ScriptedAI/sc_npc_teleport.cpp @@ -0,0 +1,363 @@ + + +#include "ScriptPCH.h" +#include "sc_npc_teleport.h" + + +#define TELE nsNpcTel::CatDest +#define PAGE nsNpcTel::Page +#define PAGEI PAGE::Instance + + +nsNpcTel::VCatDest nsNpcTel::TabCatDest; + + +uint32 PAGE::operator [] (Player * const player) const +{ + for (VInst_t i(0); i < m_TabInstance.size(); ++i) + { + if (m_TabInstance[i].GetPlayer() == player) + return m_TabInstance[i].GetPageId(); + } + return 0; +} + +PAGE::Instance & PAGE::operator () (Player * const player) +{ + for (VInst_t i(0); i < m_TabInstance.size(); ++i) + { + if (m_TabInstance[i].GetPlayer() == player) + return m_TabInstance[i]; + } + m_TabInstance.push_back(Instance(player)); + return m_TabInstance.back(); +} + +PAGE::Instance & PAGEI::operator = (const uint32 &id) +{ + m_PageId = id; + return *this; +} + +PAGE::Instance & PAGEI::operator ++ (void) +{ + ++m_PageId; + return *this; +} + +PAGE::Instance PAGEI::operator ++ (int32) +{ + Instance tmp (*this); + ++m_PageId; + return tmp; +} + +PAGE::Instance & PAGEI::operator -- (void) +{ + --m_PageId; + return *this; +} + +PAGE::Instance PAGEI::operator -- (int32) +{ + Instance tmp (*this); + --m_PageId; + return tmp; +} + +TELE::CatDest(const uint32 &id, const std::string &name, + const Flag &flag, const uint64 &data0, const uint32 &data1) + : m_id(id), m_name(name), m_flag(flag), m_data0(data0), m_data1(data1) +{ + m_TabDest.clear(); +} + +std::string TELE::GetName(const bool IsGM /* = false */) const +{ + if (!IsGM || m_flag != FLAG_TEAM) + return m_name; + + switch (m_data0) + { + case TEAM_HORDE: return std::string(m_name + " (H)"); + case TEAM_ALLIANCE: return std::string(m_name + " (A)"); + } + return m_name; +} + +bool TELE::IsAllowedToTeleport(Player * const player) const +{ + if (player->isGameMaster()) + { + if (m_flag == FLAG_GMLEVEL) + return player->GetSession()->GetSecurity() >= m_data0; + return true; + } + + switch (m_flag) + { + case FLAG_TEAM: + switch (m_data0) + { + case TEAM_HORDE: return player->GetTeam() == HORDE; + case TEAM_ALLIANCE: return player->GetTeam() == ALLIANCE; + case TEAM_ALL: return true; + } + + case FLAG_GUILD: + return player->GetGuildId() == m_data0; + + case FLAG_GMLEVEL: + return player->GetSession()->GetSecurity() >= m_data0; + + case FLAG_ISGM: + return player->isGameMaster(); + + case FLAG_ACCOUNT: + return player->GetSession()->GetAccountId() == m_data0; + + case FLAG_LEVEL: + return player->getLevel() >= m_data0; + + case FLAG_ITEM: + return player->HasItemCount(m_data0, m_data1, true); + + case FLAG_QUEST: + if (m_data1 < MAX_QUEST_STATUS) + return player->GetQuestStatus(m_data0) == m_data1; + return player->GetQuestRewardStatus(m_data0); + + case FLAG_GENDER: + return player->getGender() == m_data0; + + case FLAG_RACE: + return player->getRace() == m_data0; + + case FLAG_CLASS: + return player->getClass() == m_data0; + + case FLAG_REPUTATION: + return player->GetReputationRank(m_data0) >= m_data1; + + case FLAG_PLAYER: + return player->GetGUID() == m_data0; + } + + sLog->outError("Flag invalide (catégorie: %u). Problème important...", GetCatID()); + return false; +} + +uint32 TELE::CountOfCategoryAllowedBy(Player * const player) +{ + uint32 count (0); + for (VCatDest_t i(0); i < TabCatDest.size(); ++i) + { + if (TabCatDest[i].IsAllowedToTeleport(player)) + ++count; + } + return count; +} + +bool nsNpcTel::IsValidData(const uint32 &cat, const Flag &flag, + const uint64 &data0, const uint32 &data1) +{ + switch(flag) + { + case FLAG_TEAM: + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + if (data0 < MAX_FLAG_TEAM) + return true; + sLog->outError("data0 Invalide (équipe) (catégorie: %u).", cat); + return false; + + case FLAG_GUILD: + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + if (data0) + return true; + sLog->outError("data0 Invalide (GuildeID) (catégorie: %u).", cat); + return false; + + case FLAG_GMLEVEL: + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + if (0 < data0 && data0 < 256) + return true; + sLog->outError("data0 Invalide (GmLevel) (catégorie: %u).", cat); + return false; + + case FLAG_ISGM: + if (data0) + sLog->outError("data0 Invalide (catégorie: %u).", cat); + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + return true; + + case FLAG_ACCOUNT: + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + if (data0) + return true; + sLog->outError("data0 Invalide (AccountID) (catégorie: %u).", cat); + return false; + + case FLAG_LEVEL: + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + if (0 < data0 && data0 < 256) + return true; + sLog->outError("data0 Invalide (Level) (catégorie: %u).", cat); + return false; + + case FLAG_ITEM: + if (!data0) + { + sLog->outError("data0 Invalide(ItemID) (catégorie: %u).", cat); + return false; + } + if (data1) + return true; + sLog->outError("data1 Invalide (Item Count) (catégorie: %u).", cat); + return false; + + case FLAG_QUEST: + if (!data0) + { + sLog->outError("data0 Invalide (Quête ID) (catégorie: %u).", cat); + return false; + } + if (data1 < MAX_QUEST_STATUS + 1) + return true; + sLog->outError("data1 Invalide (Status Quête) (catégorie: %u).", cat); + return false; + + case FLAG_GENDER: + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + if (data0 < GENDER_NONE) + return true; + sLog->outError("data0 Invalide (Genre) (catégorie: %u).", cat); + return false; + + case FLAG_RACE: + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + if (0 < data0 && data0 < MAX_RACES) + return true; + sLog->outError("data0 Invalide (Race) (catégorie: %u).", cat); + return false; + + case FLAG_CLASS: + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + if (0 < data0 && data0 < MAX_CLASSES) + return true; + sLog->outError("data0 Invalide (Classe) (catégorie: %u).", cat); + return false; + + case FLAG_REPUTATION: + if (!data0) + { + sLog->outError("data0 Invalide (Faction/Réputation) (catégorie: %u).", cat); + return false; + } + if (data1 <= REP_EXALTED) + return true; + sLog->outError("data1 Invalide (Faction/Réputation) (catégorie: %u).", cat); + return false; + + case FLAG_PLAYER: + if (data1) + sLog->outError("data1 Invalide (catégorie: %u).", cat); + if (data0) + return true; + sLog->outError("data0 Invalide (GUID Personnage) (catégorie: %u).", cat); + return false; + } + + sLog->outError("flag Invalide (catégorie: %u).", cat); + return false; +} + +void LoadNpcTele(void) +{ + const char *Table[] = + { + "custom_npc_tele_category", + "custom_npc_tele_destination", + "custom_npc_tele_association", + }; + + + QueryResult result = WorldDatabase.PQuery( + "SELECT `flag`, `data0`, `data1`, `cat_id`, C.`name` `namecat`, D.`name` `namedest`, " + // 0 1 2 3 4 5 + "`pos_X`, `pos_Y`, `pos_Z`, `orientation`, `map`, `level`, `cost` " + // 6 7 8 9 10 11 12 + "FROM `%s` C, `%s` D, `%s` A " + "WHERE C.`id` = `cat_id` AND D.`id` = `dest_id` " + "ORDER BY `namecat`, `cat_id`, `namedest`", Table[0], Table[1], Table[2]); + + nsNpcTel::TabCatDest.clear(); + + if (result) + { + sLog->outError("Chargement tables %s, %s et %s...", Table[0], Table[1], Table[2]); + + uint32 catid = 0; + uint32 nbDest = 0; + bool IsValidCat = true; + bool FirstTime = true; + + do + { + Field *fields = result->Fetch(); + + if (!IsValidCat && catid == fields[3].GetUInt32() && !FirstTime) + continue; + + IsValidCat = true; + FirstTime = false; + + if (!nsNpcTel::IsValidData(fields[3].GetUInt32(), (nsNpcTel::Flag)fields[0].GetUInt8(), + fields[1].GetUInt64(), fields[2].GetUInt32())) + { + IsValidCat = false; + catid = fields[3].GetUInt32(); + continue; + } + + if (catid != fields[3].GetUInt32()) + { + catid = fields[3].GetUInt32(); + nsNpcTel::CatDest categorie (catid, fields[4].GetString(), (nsNpcTel::Flag)fields[0].GetUInt8(), + fields[1].GetUInt64(), fields[2].GetUInt32()); + nsNpcTel::TabCatDest.push_back(categorie); + } + + nsNpcTel::Dest item = + { + fields[5].GetString(), // Noms + fields[6].GetFloat(), // X + fields[7].GetFloat(), // Y + fields[8].GetFloat(), // Z + fields[9].GetFloat(), // Orientation + fields[10].GetUInt16(), // Map + fields[11].GetUInt8(), // Level + fields[12].GetUInt32(), // Prix + }; + + nsNpcTel::TabCatDest.back().AddDest(item); + ++nbDest; + } while (result->NextRow()); + + sLog->outError(""); + sLog->outError("Chargement %u npc_teleport.", nbDest); + } else sLog->outError("ATTENTION ! >> 0 Chargement npc_teleport."); +} + + +#undef TELE +#undef PAGE +#undef PAGEI diff --git a/src/server/game/AI/ScriptedAI/sc_npc_teleport.h b/src/server/game/AI/ScriptedAI/sc_npc_teleport.h new file mode 100644 index 0000000..e2e53cb --- /dev/null +++ b/src/server/game/AI/ScriptedAI/sc_npc_teleport.h @@ -0,0 +1,140 @@ + + +#ifndef SC_NPC_TELEPORT_H +#define SC_NPC_TELEPORT_H + +#include + + +namespace nsNpcTel +{ + // Différent types de permissions possible pour les check + enum Flag + { + FLAG_TEAM = 0, + FLAG_GUILD = 1, + FLAG_GMLEVEL = 2, + FLAG_ISGM = 3, + FLAG_ACCOUNT = 4, + FLAG_LEVEL = 5, + FLAG_ITEM = 6, + FLAG_QUEST = 7, + FLAG_GENDER = 8, + FLAG_RACE = 9, + FLAG_CLASS = 10, + FLAG_REPUTATION = 11, + FLAG_PLAYER = 12, + MAX_FLAG, + }; + + // Different paramètre de FLAG Possible (à retravailler selon les besoin) + enum + { + TEAM_ALL = 0, + TEAM_ALLIANCE = 1, + TEAM_HORDE = 2, + MAX_FLAG_TEAM, + }; + + // Structure des destinations + struct Dest + { + std::string m_name; + float m_X, m_Y, m_Z, m_orient; + uint16 m_map; + uint8 m_level; + uint32 m_cost; + }; + + // Class pour la gestion des destinations et des catégories + class CatDest + { + public: + + typedef std::vector VDest; + typedef VDest::size_type VDest_t; + + CatDest(const uint32 &id, const std::string &name, + const Flag &flag, const uint64 &data0, const uint32 &data1); + + void AddDest (const Dest &item) { m_TabDest.push_back(item); } + Dest GetDest (const uint32 &id) const { return m_TabDest[id]; } + uint32 GetCatID (void) const { return m_id; } + uint32 size (void) const { return m_TabDest.size(); } + + std::string GetName(const bool IsGM = false) const; + bool IsAllowedToTeleport(Player * const player) const; + + static uint32 CountOfCategoryAllowedBy(Player * const player); + + private: + + uint32 m_id; + std::string m_name; + Flag m_flag; + uint64 m_data0; + uint32 m_data1; + VDest m_TabDest; + }; + + // Class de gestion des pages + class Page + { + protected: + + // Class de gestion pour les instances + class Instance + { + public: + + Instance(Player * const player, const uint32 &PageId = 0) + : m_player(player), m_PageId(PageId) {} + + Instance & operator = (const uint32 &id); + Instance & operator ++ (void); + Instance operator ++ (int32); + Instance & operator -- (void); + Instance operator -- (int32); + + uint32 GetPageId(void) const { return m_PageId; } + Player * GetPlayer(void) const { return m_player; } + + private: + + Player *m_player; + uint32 m_PageId; + }; + + + public: + + typedef std::vector VInst; + typedef VInst::size_type VInst_t; + + Page(void) { m_TabInstance.clear(); } + + Instance & operator () (Player * const player); + uint32 operator [] (Player * const player) const; + + + private: + + VInst m_TabInstance; + }; + + typedef std::vector VCatDest; + typedef VCatDest::size_type VCatDest_t; + + // Vérification de l'intégrité des données (Pas sur que cela soit prit en compte, à vérifier) + bool IsValidData(const uint32 &cat, const Flag &flag, + const uint64 &data0, const uint32 &data1); + + extern VCatDest TabCatDest; +} + +// Chargement du script du NPC téléporteur. +void LoadNpcTele(void); + +extern WorldDatabaseWorkerPool WorldDatabase; + +#endif diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index f645e43..71bd427 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h index 352f568..a9320b1 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.h +++ b/src/server/game/AI/SmartScripts/SmartAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index fba78ae..b4c3a02 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -1789,8 +1789,6 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u } case SMART_ACTION_JUMP_TO_POS: { - if(!me) - return; me->GetMotionMaster()->MoveJump(e.target.x, e.target.y, e.target.z, (float)e.action.jump.speedxy, (float)e.action.jump.speedz); break; } diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h index 848b46a..de2c10d 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.h +++ b/src/server/game/AI/SmartScripts/SmartScript.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 9c33980..458f031 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -20,7 +20,6 @@ #include "CellImpl.h" #include "InstanceScript.h" #include "ScriptedCreature.h" - #include "SmartScriptMgr.h" void SmartWaypointMgr::LoadFromDB() diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 941b191..0c9fa82 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp index 99d592d..faddfdf 100644 --- a/src/server/game/Accounts/AccountMgr.cpp +++ b/src/server/game/Accounts/AccountMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Accounts/AccountMgr.h b/src/server/game/Accounts/AccountMgr.h index 83a0ea7..eb00de4 100644 --- a/src/server/game/Accounts/AccountMgr.h +++ b/src/server/game/Accounts/AccountMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index cc23855..14c33fe 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -2053,6 +2053,9 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement) return; SendAchievementEarned(achievement); +/** World of Warcraft Armory **/ + GetPlayer()->CreateWowarmoryFeed(1, achievement->ID, 0, 0); +/** World of Warcraft Armory **/ CompletedAchievementData& ca = m_completedAchievements[achievement->ID]; ca.date = time(NULL); ca.changed = true; diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index 68e3d7f..42cf198 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Addons/AddonMgr.cpp b/src/server/game/Addons/AddonMgr.cpp index 0bd3157..1cb3c69 100644 --- a/src/server/game/Addons/AddonMgr.cpp +++ b/src/server/game/Addons/AddonMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Addons/AddonMgr.h b/src/server/game/Addons/AddonMgr.h index bf0a602..44a7658 100644 --- a/src/server/game/Addons/AddonMgr.h +++ b/src/server/game/Addons/AddonMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index af43824..8adcb48 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 0603de4..6a3bbe5 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index 708bbc0..bc4f2b3 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/ArenaTeam.h b/src/server/game/Battlegrounds/ArenaTeam.h index 9005d2a..1303f34 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.h +++ b/src/server/game/Battlegrounds/ArenaTeam.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp index 92c8740..efbb748 100644 --- a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp +++ b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 480a175..69d8fff 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -692,6 +692,47 @@ void Battleground::EndBattleground(uint32 winner) SetArenaMatchmakerRating(GetOtherTeam(winner), loser_matchmaker_rating + loser_matchmaker_change); SetArenaTeamRatingChangeForTeam(winner, winner_change); SetArenaTeamRatingChangeForTeam(GetOtherTeam(winner), loser_change); + /** World of Warcraft Armory **/ + uint32 maxChartID; + QueryResult result = CharacterDatabase.PQuery("SELECT MAX(gameid) FROM armory_game_chart"); + if(!result) + maxChartID = 0; + else + { + maxChartID = (*result)[0].GetUInt32(); + result.release(); + } + uint32 gameID = maxChartID+1; + for(BattlegroundScoreMap::const_iterator itr = m_PlayerScores.begin(); itr != m_PlayerScores.end(); ++itr) + { + Player *plr = sObjectMgr->GetPlayer(itr->first); + if (!plr) + continue; + uint32 plTeamID = plr->GetArenaTeamId(winner_arena_team->GetSlot()); + int changeType; + uint32 resultRating; + uint32 resultTeamID; + int32 ratingChange; + if (plTeamID == winner_arena_team->GetId()) + { + changeType = 1; //win + resultRating = winner_team_rating; + resultTeamID = plTeamID; + ratingChange = winner_change; + } + else + { + changeType = 2; //lose + resultRating = loser_team_rating; + resultTeamID = loser_arena_team->GetId(); + ratingChange = loser_change; + } + std::ostringstream sql_query; + // gameid, teamid, guid, changeType, ratingChange, teamRating, damageDone, deaths, healingDone, damageTaken,, healingTaken, killingBlows, mapId, start, end + sql_query << "INSERT INTO armory_game_chart VALUES ('" << gameID << "', '" << resultTeamID << "', '" << plr->GetGUID() << "', '" << changeType << "', '" << ratingChange << "', '" << resultRating << "', '" << itr->second->DamageDone << "', '" << itr->second->Deaths << "', '" << itr->second->HealingDone << "', '" << itr->second->DamageTaken << "', '" << itr->second->HealingTaken << "', '" << itr->second->KillingBlows << "', '" << m_MapId << "', '" << m_StartTime << "', '" << m_EndTime << "')"; + CharacterDatabase.Execute(sql_query.str().c_str()); + } + /** World of Warcraft Armory **/ sLog->outArena("Arena match Type: %u for Team1Id: %u - Team2Id: %u ended. WinnerTeamId: %u. Winner rating: +%d, Loser rating: %d", m_ArenaType, m_ArenaTeamIds[BG_TEAM_ALLIANCE], m_ArenaTeamIds[BG_TEAM_HORDE], winner_arena_team->GetId(), winner_change, loser_change); if(sWorld->getBoolConfig(CONFIG_ARENA_LOG_EXTENDED_INFO)) for(Battleground::BattlegroundScoreMap::const_iterator itr = GetPlayerScoresBegin(); itr != GetPlayerScoresEnd(); itr++) @@ -1304,6 +1345,14 @@ void Battleground::UpdatePlayerScore(Player* Source, uint32 type, uint32 value, case SCORE_HEALING_DONE: // Healing Done itr->second->HealingDone += value; break; + /** World of Warcraft Armory **/ + case SCORE_DAMAGE_TAKEN: + itr->second->DamageTaken += value; // Damage Taken + break; + case SCORE_HEALING_TAKEN: + itr->second->HealingTaken += value; // Healing Taken + break; + /** World of Warcraft Armory **/ default: sLog->outError("Battleground::UpdatePlayerScore: unknown score type (%u) for BG (map: %u, instance id: %u)!", type, m_MapId, m_InstanceID); diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index e1c512a..5e7d149 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -202,6 +202,10 @@ enum ScoreType //SOTA SCORE_DESTROYED_DEMOLISHER = 18, SCORE_DESTROYED_WALL = 19, + /** World of Warcraft Armory **/ + SCORE_DAMAGE_TAKEN = 20, + SCORE_HEALING_TAKEN = 21 + /** World of Warcraft Armory **/ }; enum ArenaType @@ -286,6 +290,10 @@ class BattlegroundScore uint32 BonusHonor; uint32 DamageDone; uint32 HealingDone; + /** World of Warcraft Armory **/ + uint32 DamageTaken; + uint32 HealingTaken; + /** World of Warcraft Armory **/ }; enum BGHonorMode diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 3b1119d..b950258 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp index 13f17c0..cd8bc44 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.h b/src/server/game/Battlegrounds/BattlegroundQueue.h index 805f79d..04bcf50 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.h +++ b/src/server/game/Battlegrounds/BattlegroundQueue.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAA.cpp index 3143305..154929e 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAA.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAA.h b/src/server/game/Battlegrounds/Zones/BattlegroundAA.h index bf4dc8f..f91e56a 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAA.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAA.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp index 34f5439..29c79dd 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h index 7479749..8356abc 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp index 1635fe0..efcc15c 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h index bba5c71..8849147 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp index 7c13c4a..6a0d53f 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.h b/src/server/game/Battlegrounds/Zones/BattlegroundBE.h index 560131e..1ad05fb 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp index 4a502b7..a9750e2 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.h b/src/server/game/Battlegrounds/Zones/BattlegroundDS.h index 97022e0..2f36d90 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index cc62924..e0b7dc6 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h index 0c4152b..c9d3b1f 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp index d63c066..d03a2cc 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h index 4cf87d1..adf5124 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp index b6f7a0b..15e0905 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.h b/src/server/game/Battlegrounds/Zones/BattlegroundNA.h index 45feb7b..9223f14 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRB.cpp index ce15492..6518cdf 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRB.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRB.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRB.h b/src/server/game/Battlegrounds/Zones/BattlegroundRB.h index d8dfb5e..49cf55c 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRB.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRB.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp index 339334d..fd20a48 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.h b/src/server/game/Battlegrounds/Zones/BattlegroundRL.h index 1e209ba..1fab7ab 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp index 4e985a3..94055fb 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.h b/src/server/game/Battlegrounds/Zones/BattlegroundRV.h index bfe7394..639262f 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index e4eae65..4689c1a 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h index 5f0a209..6750cbf 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp index ddecaa3..2dc894a 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h index 664ca55..a12e24a 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt index 01569f3..e5c27cb 100644 --- a/src/server/game/CMakeLists.txt +++ b/src/server/game/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp index c29f45c..18ae00b 100644 --- a/src/server/game/Calendar/CalendarMgr.cpp +++ b/src/server/game/Calendar/CalendarMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2012 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Calendar/CalendarMgr.h b/src/server/game/Calendar/CalendarMgr.h index 5f7dcac..d468f07 100644 --- a/src/server/game/Calendar/CalendarMgr.h +++ b/src/server/game/Calendar/CalendarMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2012 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index 4e25361..335d2d7 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index d527cbe..39b226b 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -116,6 +116,10 @@ class ChatHandler void SetSentErrorMessage(bool val){ sentErrorMessage = val;}; static bool LoadCommandTable() { return load_command_table;} static void SetLoadCommandTable(bool val){ load_command_table = val;}; + /********* Add Custom ADDR ***************/ + bool HandleCharacterCustomizeCommandAddr(const char * args){return HandleCharacterCustomizeCommand(args);} + bool HandleCharacterChangeFactionCommandAddr(const char * args){return HandleCharacterChangeFactionCommand(args);} + bool HandleCharacterChangeRaceCommandAddr(const char * args){return HandleCharacterChangeRaceCommand(args);} protected: explicit ChatHandler() : m_session(NULL) { } // for CLI subclass diff --git a/src/server/game/Chat/ChatLink.cpp b/src/server/game/Chat/ChatLink.cpp index 572f1bc..44dec7c 100644 --- a/src/server/game/Chat/ChatLink.cpp +++ b/src/server/game/Chat/ChatLink.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Chat/Commands/Level0.cpp b/src/server/game/Chat/Commands/Level0.cpp index 846d826..434bf0f 100644 --- a/src/server/game/Chat/Commands/Level0.cpp +++ b/src/server/game/Chat/Commands/Level0.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Chat/Commands/Level1.cpp b/src/server/game/Chat/Commands/Level1.cpp index 659b79d..6ea31c4 100644 --- a/src/server/game/Chat/Commands/Level1.cpp +++ b/src/server/game/Chat/Commands/Level1.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp index 15017b5..ad2ebdf 100644 --- a/src/server/game/Chat/Commands/Level2.cpp +++ b/src/server/game/Chat/Commands/Level2.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp index 283f206..e3f96fb 100644 --- a/src/server/game/Chat/Commands/Level3.cpp +++ b/src/server/game/Chat/Commands/Level3.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Chat/Commands/TicketCommands.cpp b/src/server/game/Chat/Commands/TicketCommands.cpp index de21091..5f20e19 100644 --- a/src/server/game/Chat/Commands/TicketCommands.cpp +++ b/src/server/game/Chat/Commands/TicketCommands.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Combat/HostileRefManager.cpp b/src/server/game/Combat/HostileRefManager.cpp index 110d591..7c20591 100644 --- a/src/server/game/Combat/HostileRefManager.cpp +++ b/src/server/game/Combat/HostileRefManager.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Combat/HostileRefManager.h b/src/server/game/Combat/HostileRefManager.h index 52c5e25..6d01c36 100644 --- a/src/server/game/Combat/HostileRefManager.h +++ b/src/server/game/Combat/HostileRefManager.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 3a0e78c..1c3892a 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Combat/ThreatManager.h b/src/server/game/Combat/ThreatManager.h index 113b02e..9f8add3 100644 --- a/src/server/game/Combat/ThreatManager.h +++ b/src/server/game/Combat/ThreatManager.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index e6162f5..6319c22 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index b6b06db..3887c5b 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index c1bc142..23ad5fe 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp index fc0394e..9082b70 100644 --- a/src/server/game/DataStores/DBCStores.cpp +++ b/src/server/game/DataStores/DBCStores.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DataStores/DBCStores.h b/src/server/game/DataStores/DBCStores.h index bead405..87663cf 100644 --- a/src/server/game/DataStores/DBCStores.h +++ b/src/server/game/DataStores/DBCStores.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h index 0098561..ea0cdf0 100644 --- a/src/server/game/DataStores/DBCStructure.h +++ b/src/server/game/DataStores/DBCStructure.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h index f78d800..e86399c 100644 --- a/src/server/game/DataStores/DBCfmt.h +++ b/src/server/game/DataStores/DBCfmt.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DungeonFinding/LFG.h b/src/server/game/DungeonFinding/LFG.h index 8e6cb53..fa21c68 100644 --- a/src/server/game/DungeonFinding/LFG.h +++ b/src/server/game/DungeonFinding/LFG.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DungeonFinding/LFGGroupData.cpp b/src/server/game/DungeonFinding/LFGGroupData.cpp index 3aed30a..0a860be 100644 --- a/src/server/game/DungeonFinding/LFGGroupData.cpp +++ b/src/server/game/DungeonFinding/LFGGroupData.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DungeonFinding/LFGGroupData.h b/src/server/game/DungeonFinding/LFGGroupData.h index 591223e..2d904b5 100644 --- a/src/server/game/DungeonFinding/LFGGroupData.h +++ b/src/server/game/DungeonFinding/LFGGroupData.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 1daa23e..e618e49 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 7af4347..a896361 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DungeonFinding/LFGPlayerData.cpp b/src/server/game/DungeonFinding/LFGPlayerData.cpp index a01b01a..333db49 100644 --- a/src/server/game/DungeonFinding/LFGPlayerData.cpp +++ b/src/server/game/DungeonFinding/LFGPlayerData.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DungeonFinding/LFGPlayerData.h b/src/server/game/DungeonFinding/LFGPlayerData.h index b24a3c2..76bd8d2 100644 --- a/src/server/game/DungeonFinding/LFGPlayerData.h +++ b/src/server/game/DungeonFinding/LFGPlayerData.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp index 553763e..f0dff1c 100644 --- a/src/server/game/DungeonFinding/LFGScripts.cpp +++ b/src/server/game/DungeonFinding/LFGScripts.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/DungeonFinding/LFGScripts.h b/src/server/game/DungeonFinding/LFGScripts.h index 8ea794f..267f453 100644 --- a/src/server/game/DungeonFinding/LFGScripts.h +++ b/src/server/game/DungeonFinding/LFGScripts.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index 6a9f72e..1c507a9 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 3b0f98d..8d71e3c 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -2456,3 +2456,25 @@ bool Creature::checkCanReachTargetAndRemoveIfNot(Unit* pTarget) return true; } + +/********* Add Custom ADDR ***************/ +void Creature::addItem(Player* pPlayer, uint32 itemid, uint8 amount, bool received, bool created, bool broadcast) +{ + ItemPosCountVec dest; + uint32 no_space = 0; + InventoryResult msg = pPlayer->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemid, amount, &no_space); + + if (msg != EQUIP_ERR_OK) + { + pPlayer->SendEquipError(msg, NULL, NULL); + return; + } + + Item* pItem = pPlayer->StoreNewItem(dest, itemid, true, Item::GenerateItemRandomPropertyId(itemid)); + if (!pItem) + { + pPlayer->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL); + return; + } + pPlayer->SendNewItem(pItem, amount, received, created, broadcast); +} diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 22b16c8..633526f 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -422,7 +422,12 @@ class Creature : public Unit, public GridObject bool LoadCreaturesAddon(bool reload = false); void SelectLevel(const CreatureTemplate *cinfo); void LoadEquipment(uint32 equip_entry, bool force=false); - + /********* Add Custom ADDR ***************/ + void addItem(Player* pPlayer, uint32 itemid, uint8 amount, bool received, bool created, bool broadcast); + void SetCreator(uint64 creatorGUID, uint32 accId); + uint64 GetCreatorGUID(); + uint32 GetCreatorAccId(); + uint32 GetDBTableGUIDLow() const { return m_DBTableGuid; } void Update(uint32 time); // overwrited Unit::Update diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 2522e56..3ee5194 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h index 8fe1f28..f75021f 100644 --- a/src/server/game/Entities/Creature/GossipDef.h +++ b/src/server/game/Entities/Creature/GossipDef.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Creature/TemporarySummon.cpp b/src/server/game/Entities/Creature/TemporarySummon.cpp index f9afd71..e03632e 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.cpp +++ b/src/server/game/Entities/Creature/TemporarySummon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Creature/TemporarySummon.h b/src/server/game/Entities/Creature/TemporarySummon.h index 8eb2ce7..a26a3c1 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.h +++ b/src/server/game/Entities/Creature/TemporarySummon.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp index 84d3684..83c6674 100644 --- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp +++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.h b/src/server/game/Entities/DynamicObject/DynamicObject.h index 97224d0..21b7bee 100644 --- a/src/server/game/Entities/DynamicObject/DynamicObject.h +++ b/src/server/game/Entities/DynamicObject/DynamicObject.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 5d0a641..68e142c 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 6d29cca..75df0f0 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Item/Container/Bag.cpp b/src/server/game/Entities/Item/Container/Bag.cpp index 1545b53..6243ba3 100644 --- a/src/server/game/Entities/Item/Container/Bag.cpp +++ b/src/server/game/Entities/Item/Container/Bag.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Entities/Item/Container/Bag.h b/src/server/game/Entities/Item/Container/Bag.h index b73f21f..06125c0 100644 --- a/src/server/game/Entities/Item/Container/Bag.h +++ b/src/server/game/Entities/Item/Container/Bag.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index c766c90..050dbcb 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -9,6 +9,7 @@ * You may not share Myth Project's sources! For personal use only. */ +#include "../../../scripts/Custom/Transmogrification.h" #include "Common.h" #include "Item.h" #include "ObjectMgr.h" @@ -267,6 +268,14 @@ bool Item::Create(uint32 guidlow, uint32 itemid, Player const* owner) SetUInt32Value(ITEM_FIELD_DURATION, abs(itemProto->Duration)); SetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME, 0); + //ADDED FOR ARMORY + if(itemProto->Quality > 2 && itemProto->Flags != 2048 && (itemProto->Class == ITEM_CLASS_WEAPON || itemProto->Class == ITEM_CLASS_ARMOR)) + { + if(!GetOwner()) + return true; + GetOwner()->CreateWowarmoryFeed(2, itemid, guidlow, itemProto->Quality); + } + //ADDED FOR ARMORY return true; } @@ -464,6 +473,7 @@ bool Item::LoadFromDB(uint32 guid, uint64 owner_guid, Field* fields, uint32 entr /*static*/ void Item::DeleteFromDB(SQLTransaction& trans, uint32 itemGuid) { + Transmogrification::DeleteFakeFromDB(itemGuid); // Transmogrification PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); stmt->setUInt32(0, itemGuid); trans->Append(stmt); diff --git a/src/server/game/Entities/Item/ItemEnchantmentMgr.h b/src/server/game/Entities/Item/ItemEnchantmentMgr.h index 28fee59..41874b3 100644 --- a/src/server/game/Entities/Item/ItemEnchantmentMgr.h +++ b/src/server/game/Entities/Item/ItemEnchantmentMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Item/ItemPrototype.h b/src/server/game/Entities/Item/ItemPrototype.h index 133a12b..5a85863 100644 --- a/src/server/game/Entities/Item/ItemPrototype.h +++ b/src/server/game/Entities/Item/ItemPrototype.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 6dacd43..26f8ad1 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -1734,7 +1734,7 @@ bool WorldObject::canDetect(WorldObject const* obj, bool ignoreStealth) const if(obj->isAlwaysDetectableFor(seer)) return true; - if (!ignoreStealth && !seer->canDetectInvisibilityOf(obj)) + if(!seer->canDetectInvisibilityOf(obj)) return false; if(!ignoreStealth && !seer->canDetectStealthOf(obj)) @@ -2145,7 +2145,6 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert mask = UNIT_MASK_GUARDIAN; break; case SUMMON_TYPE_TOTEM: - case SUMMON_TYPE_LIGHTWELL: mask = UNIT_MASK_TOTEM; break; case SUMMON_TYPE_VEHICLE: @@ -2734,4 +2733,4 @@ uint64 WorldObject::GetTransGUID() const if(GetTransport()) return GetTransport()->GetGUID(); return 0; -} +} \ No newline at end of file diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 17e9e50..0ad33e5 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Object/ObjectDefines.h b/src/server/game/Entities/Object/ObjectDefines.h index 6cf5b35..b1bd52f 100644 --- a/src/server/game/Entities/Object/ObjectDefines.h +++ b/src/server/game/Entities/Object/ObjectDefines.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Object/ObjectPosSelector.cpp b/src/server/game/Entities/Object/ObjectPosSelector.cpp index 35d3c8e..84bcb91 100644 --- a/src/server/game/Entities/Object/ObjectPosSelector.cpp +++ b/src/server/game/Entities/Object/ObjectPosSelector.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Object/ObjectPosSelector.h b/src/server/game/Entities/Object/ObjectPosSelector.h index 06763c2..5c9d1a8 100644 --- a/src/server/game/Entities/Object/ObjectPosSelector.h +++ b/src/server/game/Entities/Object/ObjectPosSelector.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 824b485..94ddbfe 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Pet/Pet.h b/src/server/game/Entities/Pet/Pet.h index 3043b46..6fadacd 100644 --- a/src/server/game/Entities/Pet/Pet.h +++ b/src/server/game/Entities/Pet/Pet.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9859ee9..c27fb2c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -9,6 +9,7 @@ * You may not share Myth Project's sources! For personal use only. */ +#include "../../../scripts/Custom/Transmogrification.h" #include "Common.h" #include "Language.h" #include "DatabaseEnv.h" @@ -2264,6 +2265,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati if(m_transport) { + final_x += m_movementInfo.t_pos.GetPositionX(); final_y += m_movementInfo.t_pos.GetPositionY(); final_z += m_movementInfo.t_pos.GetPositionZ(); @@ -2511,6 +2513,7 @@ void Player::Regenerate(Powers power) // Butchery requires combat for this effect if(power != POWER_RUNIC_POWER || isInCombat()) addvalue += GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, power) * ((power != POWER_ENERGY) ? m_regenTimerCount : m_regenTimer) / (5 * IN_MILLISECONDS); + } if(addvalue < 0.0f) @@ -4332,7 +4335,7 @@ bool Player::resetTalents(bool no_cost) { if(HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISARMED)) return false; - + sScriptMgr->OnPlayerTalentsReset(this, no_cost); if(HasAtLoginFlag(AT_LOGIN_RESET_TALENTS)) @@ -4896,7 +4899,10 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC trans->PAppend("DELETE FROM character_queststatus_daily WHERE `guid` = '%u'", guid); trans->PAppend("DELETE FROM character_talent WHERE `guid` = '%u'", guid); trans->PAppend("DELETE FROM character_skills WHERE `guid` = '%u'", guid); - + //ADDED FOR ARMORY + trans->PAppend("DELETE FROM armory_character_stats WHERE guid = '%u'",guid); + trans->PAppend("DELETE FROM character_feed_log WHERE guid = '%u'",guid); + //ADDED FOR ARMORY CharacterDatabase.CommitTransaction(trans); break; } @@ -5264,6 +5270,7 @@ void Player::DurabilityPointsLossAll(int32 points, bool inventory) if(inventory) { // bags not have durability + // for(int i = INVENTORY_SLOT_BAG_START; i < INVENTORY_SLOT_BAG_END; i++) for(uint8 i = INVENTORY_SLOT_ITEM_START; i < INVENTORY_SLOT_ITEM_END; i++) @@ -5595,6 +5602,18 @@ void Player::LeaveLFGChannel() void Player::UpdateDefense() { + if(GetSession()->IsPremium()) + { + uint32 defense_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_DEFENSE)*sWorld->getIntConfig(CONFIG_SKILL_GAIN_DEFENSE_PREMIUM); + if(UpdateSkill(SKILL_DEFENSE,defense_skill_gain)) + { + // update dependent from defense skill part + UpdateDefenseBonusesMod(); + } + } + else + { + uint32 defense_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_DEFENSE); if(UpdateSkill(SKILL_DEFENSE, defense_skill_gain)) @@ -5603,6 +5622,7 @@ void Player::UpdateDefense() UpdateDefenseBonusesMod(); } } +} void Player::HandleBaseModValue(BaseModGroup modGroup, BaseModType modType, float amount, bool apply) { @@ -6041,6 +6061,17 @@ bool Player::UpdateCraftSkill(uint32 spellid) learnSpell(discoveredSpell, false); } + if(GetSession()->IsPremium()) + { + uint32 craft_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_CRAFTING)*sWorld->getIntConfig(CONFIG_SKILL_GAIN_CRAFTING_PREMIUM); + return UpdateSkillPro(_spell_idx->second->skillId, SkillGainChance(SkillValue, + _spell_idx->second->max_value, + (_spell_idx->second->max_value + _spell_idx->second->min_value)/2, + _spell_idx->second->min_value), + craft_skill_gain); + } + else + { uint32 craft_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_CRAFTING); return UpdateSkillPro(_spell_idx->second->skillId, SkillGainChance(SkillValue, @@ -6050,6 +6081,7 @@ bool Player::UpdateCraftSkill(uint32 spellid) craft_skill_gain); } } + } return false; } @@ -6057,6 +6089,33 @@ bool Player::UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLeve { sLog->outDebug(LOG_FILTER_PLAYER_SKILLS, "UpdateGatherSkill(SkillId %d SkillLevel %d RedLevel %d)", SkillId, SkillValue, RedLevel); + if(GetSession()->IsPremium()) + { + uint32 gathering_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_GATHERING)*sWorld->getIntConfig(CONFIG_SKILL_GAIN_GATHERING_PREMIUM); + // For skinning and Mining chance decrease with level. 1-74 - no decrease, 75-149 - 2 times, 225-299 - 8 times + switch (SkillId) + { + case SKILL_HERBALISM: + case SKILL_LOCKPICKING: + case SKILL_JEWELCRAFTING: + case SKILL_INSCRIPTION: + return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator,gathering_skill_gain); + case SKILL_SKINNING: + if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS) == 0) + return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator,gathering_skill_gain); + else + return UpdateSkillPro(SkillId, (SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator) >> (SkillValue/sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS)), gathering_skill_gain); + case SKILL_MINING: + if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_MINING_STEPS) == 0) + return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator,gathering_skill_gain); + else + return UpdateSkillPro(SkillId, (SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator) >> (SkillValue/sWorld->getIntConfig(CONFIG_SKILL_CHANCE_MINING_STEPS)),gathering_skill_gain); + } + return false; + } + else + { + uint32 gathering_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_GATHERING); // For skinning and Mining chance decrease with level. 1-74 - no decrease, 75-149 - 2 times, 225-299 - 8 times @@ -6081,6 +6140,8 @@ bool Player::UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLeve return false; } +} + bool Player::UpdateFishingSkill() { sLog->outDebug(LOG_FILTER_PLAYER_SKILLS, "UpdateFishingSkill"); @@ -6089,11 +6150,17 @@ bool Player::UpdateFishingSkill() int32 chance = SkillValue < 75 ? 100 : 2500/(SkillValue-50); - uint32 gathering_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_GATHERING); - - return UpdateSkillPro(SKILL_FISHING, chance*10, gathering_skill_gain); + if(GetSession()->IsPremium()) + { + uint32 gathering_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_GATHERING)*sWorld->getIntConfig(CONFIG_SKILL_GAIN_GATHERING_PREMIUM); + return UpdateSkillPro(SKILL_FISHING, chance*10, gathering_skill_gain); + } else { + uint32 gathering_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_GATHERING); + return UpdateSkillPro(SKILL_FISHING,chance*10,gathering_skill_gain); + } } + // levels sync. with spell requirement for skill levels to learn // bonus abilities in sSkillLineAbilityStore // Used only to avoid scan DBC at each skill grow @@ -6169,15 +6236,60 @@ void Player::UpdateWeaponSkill (WeaponAttackType attType) if(pVictim && pVictim->GetTypeId() == TYPEID_UNIT && (pVictim->ToCreature()->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_SKILLGAIN)) return; - uint32 weapon_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_WEAPON); + if(GetSession()->IsPremium()) + { + uint32 weapon_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_WEAPON)* sWorld->getIntConfig(CONFIG_SKILL_GAIN_WEAPON_PREMIUM); + switch(attType) + { + case BASE_ATTACK: + { + Item *tmpitem = GetWeaponForAttack(attType,true); + if (!tmpitem) + UpdateSkill(SKILL_UNARMED,weapon_skill_gain); + else if (tmpitem->GetTemplate()->SubClass != ITEM_SUBCLASS_WEAPON_FISHING_POLE) + UpdateSkill(tmpitem->GetSkill(),weapon_skill_gain); + break; + } + case OFF_ATTACK: + case RANGED_ATTACK: + { + Item *tmpitem = GetWeaponForAttack(attType,true); + if (tmpitem) + UpdateSkill(tmpitem->GetSkill(), weapon_skill_gain); + break; + } + default: + break; + } + UpdateAllCritPercentages(); + } else { + uint32 weapon_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_WEAPON); - Item* tmpitem = GetWeaponForAttack(attType, true); - if(!tmpitem && attType == BASE_ATTACK) - UpdateSkill(SKILL_UNARMED, weapon_skill_gain); - else if(tmpitem && tmpitem->GetTemplate()->SubClass != ITEM_SUBCLASS_WEAPON_FISHING_POLE) - UpdateSkill(tmpitem->GetSkill(), weapon_skill_gain); + switch(attType) + { + case BASE_ATTACK: + { + Item *tmpitem = GetWeaponForAttack(attType, true); - UpdateAllCritPercentages(); + if(!tmpitem) + UpdateSkill(SKILL_UNARMED, weapon_skill_gain); + else if(tmpitem->GetTemplate()->SubClass != ITEM_SUBCLASS_WEAPON_FISHING_POLE) + UpdateSkill(tmpitem->GetSkill(), weapon_skill_gain); + break; + } + case OFF_ATTACK: + case RANGED_ATTACK: + { + Item *tmpitem = GetWeaponForAttack(attType, true); + if(tmpitem) + UpdateSkill(tmpitem->GetSkill(), weapon_skill_gain); + break; + } + default: + break; + } + UpdateAllCritPercentages(); + } } void Player::UpdateCombatSkills(Unit* pVictim, WeaponAttackType attType, bool defence) @@ -6692,6 +6804,7 @@ void Player::SendMessageToSetInRange(WorldPacket *data, float dist, bool self, b void Player::SendMessageToSet(WorldPacket *data, Player const* skipped_rcvr) { + if(skipped_rcvr != this) GetSession()->SendPacket(data); @@ -6786,6 +6899,8 @@ void Player::CheckAreaExploreAndOutdoor() else { XP = uint32(sObjectMgr->GetBaseXP(p->area_level)*sWorld->getRate(RATE_XP_EXPLORE)); + if(GetSession()->IsPremium()) + XP *= uint32(sWorld->getRate(RATE_XP_EXPLORE_PREMIUM)); } GiveXP(XP, NULL); @@ -6912,6 +7027,7 @@ void Player::RewardReputation(Unit* pVictim, float rate) donerep1 = int32(donerep1*(rate + favored_rep_mult)); if(recruitAFriend) + donerep1 = int32(donerep1 * (1 + sWorld->getRate(RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS))); FactionEntry const *factionEntry1 = sFactionStore.LookupEntry(ChampioningFaction ? ChampioningFaction : Rep->repfaction1); @@ -7034,6 +7150,8 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool pvpt uint64 victim_guid = 0; uint32 victim_rank = 0; + /********* Add Custom Pandaria PvP Rank ***************/ + uint32 rank_diff = 0; // need call before fields update to have chance move yesterday data to appropriate fields before today data change. UpdateHonorFields(); @@ -7073,22 +7191,47 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool pvpt // [15..28] Horde honor titles and player name // [29..38] Other title and player name // [39+] Nothing - uint32 victim_title = pVictim->GetUInt32Value(PLAYER_CHOSEN_TITLE); - // Get Killer titles, CharTitlesEntry::bit_index + /********* Add Custom ADDR PvP Rank ***************/ + // PLAYER__FIELD_KNOWN_TITLES describe which titles player can use, + // so we must find biggest pvp title , even for killer to find extra honor value + uint32 vtitle = pVictim->GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES); + uint32 victim_title = 0; + uint32 ktitle = GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES); + uint32 killer_title = 0; + if(PLAYER_TITLE_MASK_ALL_PVP & ktitle) + { + for(int i = ((GetTeam() == ALLIANCE) ? 1:HKRANKMAX);i!=((GetTeam() == ALLIANCE) ? HKRANKMAX : (2*HKRANKMAX-1));i++) + { + if(ktitle & (1<GetTeam() == ALLIANCE) ? 1:HKRANKMAX);i!=((pVictim->GetTeam() == ALLIANCE) ? HKRANKMAX : (2*HKRANKMAX-1));i++) + { + if(vtitle & (1< rank[5..18] // title[15..28] -> rank[5..18] // title[other] -> 0 - if(victim_title == 0) - victim_guid = 0; // Don't show HK: message, only log. - else if(victim_title < 15) - victim_rank = victim_title + 4; - else if(victim_title < 29) - victim_rank = victim_title - 14 + 4; - else - victim_guid = 0; // Don't show HK: message, only log. + /********* Add Custom ADDR PvP Rank ***************/ + // now find rank difference + if (killer_title == 0 && victim_rank>4) + rank_diff = victim_rank - 4; + else if (killer_title < HKRANKMAX) + rank_diff = (victim_rank>(killer_title + 4))? (victim_rank - (killer_title + 4)) : 0; + else if (killer_title < (2*HKRANKMAX-1)) + rank_diff = (victim_rank>(killer_title - (HKRANKMAX-1) +4))? (victim_rank - (killer_title - (HKRANKMAX-1) + 4)) : 0; honor_f = ceil(Trinity::Honor::hk_honor_at_level_f(k_level) * (v_level - k_grey) / (k_level - k_grey)); + /********* Add Custom ADDR PvP Rank ***************/ + honor_f *= int(1 + rank_diff * 0.1); // count the number of playerkills in one day ApplyModUInt32Value(PLAYER_FIELD_KILLS, 1, true); @@ -7099,6 +7242,8 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool pvpt UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HK_RACE, pVictim->getRace()); UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA, GetAreaId()); UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL, 1, 0, pVictim); + /********* Add Custom ADDR PvP Rank ***************/ + UpdateKnownTitles(); } else { if(!uVictim->ToCreature()->isRacialLeader()) return false; @@ -7176,6 +7321,31 @@ void Player::SetHonorPoints(uint32 value) if(value) AddKnownCurrency(ITEM_HONOR_POINTS_ID); } +/********* Add Custom ADDR PvP Rank ***************/ + +void Player::UpdateKnownTitles() +{ + uint32 new_title = 0; + uint32 honor_kills = GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS); + uint32 old_title = GetUInt32Value(PLAYER_CHOSEN_TITLE); + RemoveFlag64(PLAYER__FIELD_KNOWN_TITLES,PLAYER_TITLE_MASK_ALL_PVP); + if (honor_kills < 0) + return; + bool max_rank = ((honor_kills >= sWorld->pvp_ranks[HKRANKMAX-1]) ? true : false); + for (int i = HKRANK01; i != HKRANKMAX; ++i) + { + if (honor_kills < sWorld->pvp_ranks[i] || (max_rank)) + { + new_title = ((max_rank) ? (HKRANKMAX-1) : (i-1)); + if (new_title > 0) + new_title += ((GetTeam() == ALLIANCE) ? 0 : (HKRANKMAX-1)); + break; + } + } + SetFlag64(PLAYER__FIELD_KNOWN_TITLES,uint64(1) << new_title); + if (old_title > 0 && old_title < (2*HKRANKMAX-1) && new_title > old_title) + SetUInt32Value(PLAYER_CHOSEN_TITLE,new_title); +} void Player::SetArenaPoints(uint32 value) { @@ -8725,7 +8895,7 @@ void Player::SendLoot(uint64 guid, LootType loot_type) loot->FillLoot(item->GetEntry(), LootTemplates_Milling, this, true); break; default: - loot->generateMoneyLoot(item->GetTemplate()->MinMoneyLoot, item->GetTemplate()->MaxMoneyLoot); + loot->generateMoneyLoot(item->GetTemplate()->MinMoneyLoot, item->GetTemplate()->MaxMoneyLoot, GetSession()->IsPremium()); loot->FillLoot(item->GetEntry(), LootTemplates_Item, this, true, loot->gold != 0); break; } @@ -8793,7 +8963,10 @@ void Player::SendLoot(uint64 guid, LootType loot_type) // Generate extra money for pick pocket loot const uint32 a = urand(0, creature->getLevel()/2); const uint32 b = urand(0, getLevel()/2); - loot->gold = uint32(10 * (a + b) * sWorld->getRate(RATE_DROP_MONEY)); + if (GetSession()->IsPremium()) + loot->gold = uint32(10 * (a + b) * sWorld->getRate(RATE_DROP_MONEY) * sWorld->getRate(RATE_DROP_MONEY_PREMIUM)); + else + loot->gold = uint32(10 * (a + b) * sWorld->getRate(RATE_DROP_MONEY)); permission = OWNER_PERMISSION; } } @@ -9675,6 +9848,7 @@ void Player::SetSheath(SheathState sheathed) SetVirtualItemSlot(2, GetWeaponForAttack(RANGED_ATTACK, true)); break; default: + SetVirtualItemSlot(0, NULL); SetVirtualItemSlot(1, NULL); SetVirtualItemSlot(2, NULL); @@ -9903,6 +10077,7 @@ InventoryResult Player::CanUnequipItems(uint32 item, uint32 count) const if(Bag *pBag = GetBagByPos(i)) for(uint32 j = 0; j < pBag->GetBagSize(); ++j) if(Item *pItem = GetItemByPos(i, j)) + if(pItem->GetEntry() == item) { tempcount += pItem->GetCount(); @@ -11840,6 +12015,8 @@ void Player::RemoveAmmo() { SetUInt32Value(PLAYER_AMMO_ID, 0); + + m_ammoDPS = 0.0f; if(CanModifyStats()) @@ -12170,7 +12347,11 @@ void Player::SetVisibleItemSlot(uint8 slot, Item *pItem) { if(pItem) { - SetUInt32Value(PLAYER_VISIBLE_ITEM_1_ENTRYID + (slot * 2), pItem->GetEntry()); + // Transmogrification + if(Transmogrification::GetFakeEntry(pItem)) + SetUInt32Value(PLAYER_VISIBLE_ITEM_1_ENTRYID + (slot * 2), Transmogrification::GetFakeEntry(pItem)); + else + SetUInt32Value(PLAYER_VISIBLE_ITEM_1_ENTRYID + (slot * 2), pItem->GetEntry()); SetUInt16Value(PLAYER_VISIBLE_ITEM_1_ENCHANTMENT + (slot * 2), 0, pItem->GetEnchantmentId(PERM_ENCHANTMENT_SLOT)); SetUInt16Value(PLAYER_VISIBLE_ITEM_1_ENCHANTMENT + (slot * 2), 1, pItem->GetEnchantmentId(TEMP_ENCHANTMENT_SLOT)); } @@ -12295,6 +12476,8 @@ void Player::MoveItemFromInventory(uint8 bag, uint8 slot, bool update) { if(Item* it = GetItemByPos(bag, slot)) { + // Transmogrification + Transmogrification::DeleteFakeFromDB(it->GetGUIDLow()); ItemRemovedQuestCheck(it->GetEntry(), it->GetCount()); RemoveItem(bag, slot, update); it->SetNotRefundable(this, false); @@ -13232,6 +13415,7 @@ void Player::SendEquipError(InventoryResult msg, Item* pItem, Item* pItem2, uint data << uint64(pItem2 ? pItem2->GetGUID() : 0); data << uint8(0); // bag type subclass, used with EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM and EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2 + switch(msg) { case EQUIP_ERR_CANT_EQUIP_LEVEL_I: @@ -14904,12 +15088,20 @@ void Player::RewardQuest(Quest const *pQuest, uint32 reward, Object* questGiver, Unit::AuraEffectList const& ModXPPctAuras = GetAuraEffectsByType(SPELL_AURA_MOD_XP_QUEST_PCT); for(Unit::AuraEffectList::const_iterator i = ModXPPctAuras.begin(); i != ModXPPctAuras.end(); ++i) AddPctN(XP, (*i)->GetAmount()); + + if (GetSession()->IsPremium()) + XP *= uint32(sWorld->getRate(RATE_XP_QUEST_PREMIUM)); int32 moneyRew = 0; if(getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) GiveXP(XP, NULL); else - moneyRew = int32(pQuest->GetRewMoneyMaxLevel() * sWorld->getRate(RATE_DROP_MONEY)); + { + if (GetSession()->IsPremium()) + moneyRew = int32(pQuest->GetRewMoneyMaxLevel() * sWorld->getRate(RATE_DROP_MONEY) * sWorld->getRate(RATE_DROP_MONEY_PREMIUM)); + else + moneyRew = int32(pQuest->GetRewMoneyMaxLevel() * sWorld->getRate(RATE_DROP_MONEY)); + } // Give player extra money if GetRewOrReqMoney > 0 and get ReqMoney if negative if(pQuest->GetRewOrReqMoney()) @@ -16366,6 +16558,7 @@ void Player::SetHomebind(WorldLocation const& /*loc*/, uint32 /*area_id*/) stmt->setUInt16(1, m_homebindAreaId); stmt->setFloat (2, m_homebindX); stmt->setFloat (3, m_homebindY); + stmt->setFloat (4, m_homebindZ); stmt->setUInt32(5, GetGUIDLow()); CharacterDatabase.Execute(stmt); @@ -16437,6 +16630,10 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder) CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '%u' WHERE `guid` ='%u'", uint32(AT_LOGIN_RENAME), guid); return false; } + + //ADDED FOR ARMORY + InitWowarmoryFeeds(); + //ADDED FOR ARMORY // overwrite possible wrong/corrupted guid SetUInt64Value(OBJECT_FIELD_GUID, MAKE_NEW_GUID(guid, 0, HIGHGUID_PLAYER)); @@ -16903,6 +17100,7 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder) _LoadRandomBGStatus(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOADRANDOMBG)); // after spell and quest load + InitTalentForLevel(); learnDefaultSpells(); @@ -18206,6 +18404,7 @@ void Player::SaveToDB() sLog->outDebug(LOG_FILTER_UNITS, "The value of player %s at save: ", m_name.c_str()); outDebugValues(); + std::string sql_name = m_name; CharacterDatabase.EscapeString(sql_name); @@ -18382,7 +18581,29 @@ void Player::SaveToDB() _SaveStats(trans); CharacterDatabase.CommitTransaction(trans); - + /* World of Warcraft Armory */ + // Place this code AFTER CharacterDatabase.CommitTransaction(); to avoid some character saving errors. + // Wowarmory feeds + std::ostringstream sWowarmory; + for (WowarmoryFeeds::iterator iter = m_wowarmory_feeds.begin(); iter < m_wowarmory_feeds.end(); ++iter) { + sWowarmory << "INSERT IGNORE INTO character_feed_log (guid,type,data,date,counter,difficulty,item_guid,item_quality) VALUES "; + // guid type data date counter difficulty item_guid item_quality + sWowarmory << "(" << (*iter).guid << ", " << (*iter).type << ", " << (*iter).data << ", " << uint64((*iter).date) << ", " << (*iter).counter << ", " << uint32((*iter).difficulty) << ", " << (*iter).item_guid << ", " << (*iter).item_quality << ");"; + CharacterDatabase.PExecute(sWowarmory.str().c_str()); + sWowarmory.str(""); + } + // Clear old saved feeds from storage - they are not required for server core. + InitWowarmoryFeeds(); + // Character stats + std::ostringstream ps; + time_t t = time(NULL); + CharacterDatabase.PExecute("DELETE FROM armory_character_stats WHERE guid = %u", GetGUIDLow()); + ps << "INSERT INTO armory_character_stats (guid, data, save_date) VALUES (" << GetGUIDLow() << ", '"; + for (uint16 i = 0; i < m_valuesCount; ++i) + ps << GetUInt32Value(i) << " "; + ps << "', " << uint64(t) << ");"; + CharacterDatabase.PExecute(ps.str().c_str()); + /* World of Warcraft Armory */ // save pet (hunter pet level and experience and all type pets health/mana). if(Pet* pet = GetPet()) pet->SavePetToDB(PET_SAVE_AS_CURRENT); @@ -20209,6 +20430,7 @@ void Player::InitDataForForm(bool reapplyMods) } case FORM_BEAR: case FORM_DIREBEAR: + { if(getPowerType() != POWER_RAGE) setPowerType(POWER_RAGE); @@ -23945,6 +24167,7 @@ void Player::BuildEnchantmentsInfoData(WorldPacket *data) size_t slotUsedMaskPos = data->wpos(); *data << uint32(slotUsedMask); // slotUsedMask < 0x80000 + for(uint32 i = 0; i < EQUIPMENT_SLOT_END; ++i) { Item *item = GetItemByPos(INVENTORY_SLOT_BAG_0, i); @@ -24709,6 +24932,45 @@ void Player::_SaveInstanceTimeRestrictions(SQLTransaction& trans) stmt->setUInt64(2, itr->second); trans->Append(stmt); } + } + +void Player::InitWowarmoryFeeds() { + // Clear feeds + m_wowarmory_feeds.clear(); +} + +void Player::CreateWowarmoryFeed(uint32 type, uint32 data, uint32 item_guid, uint32 item_quality) { + /* + 1 - TYPE_ACHIEVEMENT_FEED + 2 - TYPE_ITEM_FEED + 3 - TYPE_BOSS_FEED + */ + if (GetGUIDLow() == 0) + { + sLog->outError("[Wowarmory]: player is not initialized, unable to create log entry!"); + return; + } + if (type <= 0 || type > 3) + { + sLog->outError("[Wowarmory]: unknown feed type: %d, ignore.", type); + return; + } + if (data == 0) + { + sLog->outError("[Wowarmory]: empty data (GUID: %u), ignore.", GetGUIDLow()); + return; + } + WowarmoryFeedEntry feed; + feed.guid = GetGUIDLow(); + feed.type = type; + feed.data = data; + feed.difficulty = type == 3 ? GetMap()->GetDifficulty() : 0; + feed.item_guid = item_guid; + feed.item_quality = item_quality; + feed.counter = 0; + feed.date = time(NULL); + sLog->outDebug(LOG_FILTER_UNITS, "[Wowarmory]: create wowarmory feed (GUID: %u, type: %d, data: %u).", feed.guid, feed.type, feed.data); + m_wowarmory_feeds.push_back(feed); } void Player::SetTimedAchievement(uint32 AchievementId,uint32 time, uint32 maxprogress) @@ -24766,4 +25028,4 @@ void Player::UpdateKillingTimedAchievementProgress(uint32 entry, uint8 type) atd = GetTimedAchievement(AchievementId); } } -} \ No newline at end of file +} diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index aa5b070..9783641 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -383,6 +383,17 @@ enum PlayerFlags PLAYER_FLAGS_NO_XP_GAIN = 0x02000000 }; +/********* Add Custom Pandaria PvP Rank ***************/ +#define PLAYER_TITLE_MASK_ALLIANCE_PVP \ + (PLAYER_TITLE_PRIVATE | PLAYER_TITLE_CORPORAL | PLAYER_TITLE_SERGEANT_A | PLAYER_TITLE_MASTER_SERGEANT | PLAYER_TITLE_SERGEANT_MAJOR | PLAYER_TITLE_KNIGHT | \ + PLAYER_TITLE_KNIGHT_LIEUTENANT | PLAYER_TITLE_KNIGHT_CAPTAIN | PLAYER_TITLE_KNIGHT_CHAMPION | PLAYER_TITLE_LIEUTENANT_COMMANDER | PLAYER_TITLE_COMMANDER | \ + PLAYER_TITLE_MARSHAL | PLAYER_TITLE_FIELD_MARSHAL | PLAYER_TITLE_GRAND_MARSHAL) +#define PLAYER_TITLE_MASK_HORDE_PVP \ + (PLAYER_TITLE_SCOUT | PLAYER_TITLE_GRUNT | PLAYER_TITLE_SERGEANT_H | PLAYER_TITLE_SENIOR_SERGEANT | PLAYER_TITLE_FIRST_SERGEANT | PLAYER_TITLE_STONE_GUARD | \ + PLAYER_TITLE_BLOOD_GUARD | PLAYER_TITLE_LEGIONNAIRE | PLAYER_TITLE_CENTURION | PLAYER_TITLE_CHAMPION | PLAYER_TITLE_LIEUTENANT_GENERAL | PLAYER_TITLE_GENERAL | \ + PLAYER_TITLE_WARLORD | PLAYER_TITLE_HIGH_WARLORD) +#define PLAYER_TITLE_MASK_ALL_PVP \ + (PLAYER_TITLE_MASK_ALLIANCE_PVP | PLAYER_TITLE_MASK_HORDE_PVP) // used for PLAYER__FIELD_KNOWN_TITLES field (uint64), (1< WowarmoryFeeds; +/* World of Warcraft Armory */ class Player : public Unit, public GridObject { friend class WorldSession; @@ -1429,6 +1455,9 @@ class Player : public Unit, public GridObject bool SatisfyQuestWeek(Quest const* qInfo, bool msg); bool GiveQuestSourceItem(Quest const *pQuest); bool TakeQuestSourceItem(uint32 questId, bool msg); + + + bool GetQuestRewardStatus(uint32 quest_id) const; QuestStatus GetQuestStatus(uint32 quest_id) const; void SetQuestStatus(uint32 quest_id, QuestStatus status); @@ -1542,6 +1571,7 @@ class Player : public Unit, public GridObject static void DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmChars = true, bool deleteFinally = false); static void DeleteOldCharacters(); + static void DeleteOldCharacters(uint32 keepDays); bool m_mailsLoaded; @@ -1894,6 +1924,7 @@ class Player : public Unit, public GridObject inline void RecalculateRating(CombatRating cr) { ApplyRatingMod(cr, 0, true);} float GetMeleeCritFromAgility(); float GetDodgeFromAgility(); + float GetSpellCritFromIntellect(); float OCTRegenHPPerSpirit(); float OCTRegenMPPerSpirit(); @@ -2057,6 +2088,8 @@ class Player : public Unit, public GridObject void ModifyHonorPoints(int32 value, SQLTransaction* trans = NULL); //! If trans is specified, honor save query will be added to trans void ModifyArenaPoints(int32 value, SQLTransaction* trans = NULL); //! If trans is specified, arena point save query will be added to trans uint32 GetMaxPersonalArenaRatingRequirement(uint32 minarenaslot) const; + /********* Add Custom Pandaria PvP Rank ***************/ + void UpdateKnownTitles(); void SetHonorPoints(uint32 value); void SetArenaPoints(uint32 value); @@ -2367,6 +2400,10 @@ class Player : public Unit, public GridObject void SendCinematicStart(uint32 CinematicSequenceId); void SendMovieStart(uint32 MovieId); + /* World of Warcraft Armory */ + void CreateWowarmoryFeed(uint32 type, uint32 data, uint32 item_guid, uint32 item_quality); + void InitWowarmoryFeeds(); + /* World of Warcraft Armory */ /*********************************************************/ /*** INSTANCE SYSTEM ***/ @@ -2807,6 +2844,8 @@ class Player : public Unit, public GridObject uint32 m_timeSyncTimer; uint32 m_timeSyncClient; uint32 m_timeSyncServer; + // World of Warcraft Armory Feeds + WowarmoryFeeds m_wowarmory_feeds; InstanceTimeMap _instanceResetTimes; uint32 _pendingBindId; @@ -2894,7 +2933,7 @@ class Player : public Unit, public GridObject if(hasQuest(13538)) CompleteQuest(13538); } - + int T12066; void Achievement3848() { T12066 = 0; } diff --git a/src/server/game/Entities/Player/SocialMgr.cpp b/src/server/game/Entities/Player/SocialMgr.cpp index 24831a1..f857bdb 100644 --- a/src/server/game/Entities/Player/SocialMgr.cpp +++ b/src/server/game/Entities/Player/SocialMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Player/SocialMgr.h b/src/server/game/Entities/Player/SocialMgr.h index 8f1005a..aa5bd68 100644 --- a/src/server/game/Entities/Player/SocialMgr.h +++ b/src/server/game/Entities/Player/SocialMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Totem/Totem.cpp b/src/server/game/Entities/Totem/Totem.cpp index e9864f6..5682b18 100644 --- a/src/server/game/Entities/Totem/Totem.cpp +++ b/src/server/game/Entities/Totem/Totem.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Totem/Totem.h b/src/server/game/Entities/Totem/Totem.h index 262b9c7..6697828 100644 --- a/src/server/game/Entities/Totem/Totem.h +++ b/src/server/game/Entities/Totem/Totem.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index ee95720..dfe28a9 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -19,6 +19,7 @@ #include "DBCStores.h" #include "World.h" #include "GameObjectAI.h" +#include "Vehicle.h" void MapManager::LoadTransports() { @@ -117,6 +118,130 @@ void MapManager::LoadTransports() sLog->outString(); } +Transport* MapManager::LoadTransportInMap(Map* instance, uint32 goEntry, uint32 period) +{ + const GameObjectTemplate* goInfo = sObjectMgr->GetGameObjectTemplate(goEntry); + + if(!goInfo) + { + sLog->outErrorDb("Transport ID:%u, will not be loaded, gameobject_template missing", goEntry); + return NULL; + } + + if(goInfo->type != GAMEOBJECT_TYPE_MO_TRANSPORT) + { + sLog->outErrorDb("Transport ID:%u, Name: %s, will not be loaded, gameobject_template type wrong", goEntry, goInfo->name.c_str()); + return NULL; + } + + Transport* t = new Transport(period, goInfo->ScriptId); + std::set mapsUsed; + if(!t->GenerateWaypoints(goInfo->moTransport.taxiPathId, mapsUsed)) + { + sLog->outErrorDb("Transport (path id %u) path size = 0. Transport ignored, check DBC files or the gameobject's data0 field.", goInfo->moTransport.taxiPathId); + delete t; + return NULL; + } + uint32 transportLowGuid = sObjectMgr->GenerateLowGuid(HIGHGUID_MO_TRANSPORT); + + if(!t->Create(transportLowGuid, goEntry, t->m_WayPoints[0].mapid, t->m_WayPoints[0].x, t->m_WayPoints[0].y, t->m_WayPoints[0].z-10, 0.0f, 0, 0)) + { + delete t; + return NULL; + } + + m_Transports.insert(t); + for(std::set::const_iterator i = mapsUsed.begin(); i != mapsUsed.end(); ++i) + m_TransportsByMap[*i].insert(t); + t->SetMap(instance); + t->AddToWorld(); + t->BuildStartMovePacket(instance); + t->BuildStopMovePacket(instance); + // Make transport realy stoppped at server-side. Movement will be handled by scripts + t->m_WayPoints.clear(); + + return t; +} + +void MapManager::UnLoadTransportForPlayers(Player* player) +{ + MapManager::TransportMap& tmap = sMapMgr->m_TransportsByInstanceIdMap; + + UpdateData transData; + + MapManager::TransportSet& tset = tmap[player->GetInstanceId()]; + + for(MapManager::TransportSet::const_iterator i = tset.begin(); i != tset.end(); ++i) + { + for(Transport::CreatureSet::iterator itr = (*i)->m_NPCPassengerSet.begin(); itr != (*i)->m_NPCPassengerSet.end();) + { + if(Creature* npc = *itr) + { + npc->SetTransport(NULL); + npc->setActive(false); + npc->RemoveFromWorld(); + } + ++itr; + } + + (*i)->BuildOutOfRangeUpdateBlock(&transData); + sLog->outDetail("Descargando el transporte >---< Aqui desde el de TransportSet"); + } + + WorldPacket packet; + transData.BuildPacket(&packet); + player->SendDirectMessage(&packet); +} + +void MapManager::LoadTransportForPlayers(Player* player) +{ + MapManager::TransportMap& tmap = sMapMgr->m_TransportsByInstanceIdMap; + + UpdateData transData; + + MapManager::TransportSet& tset = tmap[player->GetInstanceId()]; + + for(MapManager::TransportSet::const_iterator i = tset.begin(); i != tset.end(); ++i) + { + (*i)->BuildCreateUpdateBlockForPlayer(&transData, player); + } + + WorldPacket packet; + transData.BuildPacket(&packet); + player->SendDirectMessage(&packet); +} + +void MapManager::UnLoadTransportFromMap(Transport* t) +{ + Map* pMap = t->GetMap(); + + for(Transport::CreatureSet::iterator itr = t->m_NPCPassengerSet.begin(); itr != t->m_NPCPassengerSet.end();) + { + if(Creature* pCreature = *itr) + { + pCreature->SetTransport(NULL); + pCreature->setActive(false); + pCreature->RemoveFromWorld(); + } + ++itr; + } + + UpdateData transData; + t->BuildOutOfRangeUpdateBlock(&transData); + WorldPacket out_packet; + transData.BuildPacket(&out_packet); + + for(Map::PlayerList::const_iterator itr = pMap->GetPlayers().begin(); itr != pMap->GetPlayers().end(); ++itr) + if(t != itr->getSource()->GetTransport()) + itr->getSource()->SendDirectMessage(&out_packet); + + t->m_NPCPassengerSet.clear(); + m_TransportsByInstanceIdMap[t->GetInstanceId()].erase(t); + m_Transports.erase(t); + t->m_WayPoints.clear(); + t->RemoveFromWorld(); +} + void MapManager::LoadTransportNPCs() { uint32 oldMSTime = getMSTime(); @@ -172,8 +297,11 @@ Transport::~Transport() { for(CreatureSet::iterator itr = m_NPCPassengerSet.begin(); itr != m_NPCPassengerSet.end(); ++itr) { - (*itr)->SetTransport(NULL); - GetMap()->AddObjectToRemoveList(*itr); + Creature* passenger = *itr; + Map* map = passenger->GetMap(); + passenger->SetTransport(NULL); + passenger->CleanupsBeforeDelete(); + map->Remove(passenger, true); } m_NPCPassengerSet.clear(); @@ -434,6 +562,7 @@ bool Transport::GenerateWaypoints(uint32 pathid, std::set &mapids) WayPoint pos(keyFrames[i + 1].node->mapid, keyFrames[i + 1].node->x, keyFrames[i + 1].node->y, keyFrames[i + 1].node->z, teleport, 0, keyFrames[i + 1].node->arrivalEventID, keyFrames[i + 1].node->departureEventID); // sLog->outString("T: %d, x: %f, y: %f, z: %f, t:%d", t, pos.x, pos.y, pos.z, teleport); + m_WayPoints[t] = pos; t += keyFrames[i + 1].node->delay * 1000; @@ -518,6 +647,9 @@ bool Transport::RemovePassenger(Player* passenger) void Transport::Update(uint32 diff) { + UpdateNPCPositions(); + UpdatePlayerPositions(); + if(!AI()) { if(!AIM_Initialize()) @@ -542,10 +674,7 @@ void Transport::Update(uint32 diff) if(m_curr->second.mapid != GetMapId() || m_curr->second.teleport) TeleportTransport(m_curr->second.mapid, m_curr->second.x, m_curr->second.y, m_curr->second.z); else - { Relocate(m_curr->second.x, m_curr->second.y, m_curr->second.z, GetAngle(m_next->second.x, m_next->second.y) + float(M_PI)); - UpdateNPCPositions(); // COME BACK MARKER - } sScriptMgr->OnRelocate(this, m_curr->first, m_curr->second.mapid, m_curr->second.x, m_curr->second.y, m_curr->second.z); @@ -609,6 +738,13 @@ void Transport::BuildStartMovePacket(Map const* targetMap) UpdateForMap(targetMap); } +void Transport::BuildWaitMovePacket(Map const* targetMap) +{ + m_WayPoints.clear(); + SetGoState(GO_STATE_READY); + UpdateForMap(targetMap); +} + void Transport::BuildStopMovePacket(Map const* targetMap) { RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); @@ -616,7 +752,7 @@ void Transport::BuildStopMovePacket(Map const* targetMap) UpdateForMap(targetMap); } -uint32 Transport::AddNPCPassenger(uint32 tguid, uint32 entry, float x, float y, float z, float o, uint32 anim) +Creature* Transport::AddNPCPassenger(uint32 tguid, uint32 entry, float x, float y, float z, float o, uint32 anim) { Map* map = GetMap(); Creature* pCreature = new Creature; @@ -632,8 +768,7 @@ uint32 Transport::AddNPCPassenger(uint32 tguid, uint32 entry, float x, float y, pCreature->m_movementInfo.guid = GetGUID(); pCreature->m_movementInfo.t_pos.Relocate(x, y, z, o); - if(anim) - pCreature->SetUInt32Value(UNIT_NPC_EMOTESTATE, anim); + MapManager::NormalizeOrientation(o); pCreature->Relocate( GetPositionX() + (x * cos(GetOrientation()) + y * sin(GetOrientation() + float(M_PI))), @@ -653,17 +788,51 @@ uint32 Transport::AddNPCPassenger(uint32 tguid, uint32 entry, float x, float y, map->Add(pCreature); m_NPCPassengerSet.insert(pCreature); - if(tguid == 0) + pCreature->setActive(true); + sScriptMgr->OnAddCreaturePassenger(this, pCreature); + return pCreature; +} + +Creature* Transport::AddNPCPassengerInInstance(uint32 entry, float x, float y, float z, float o, uint32 anim) +{ + Map* map = GetMap(); + Creature* pCreature = new Creature; + + if(!pCreature->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_UNIT), map, GetPhaseMask(), entry, 0, GetGOInfo()->faction, 0, 0, 0, 0)) + { - ++currenttguid; - tguid = currenttguid; + delete pCreature; + return NULL; } - else - currenttguid = std::max(tguid, currenttguid); - pCreature->SetGUIDTransport(tguid); + pCreature->SetTransport(this); + pCreature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); + pCreature->m_movementInfo.guid = GetGUID(); + pCreature->m_movementInfo.t_pos.Relocate(x, y, z, o); + o += GetOrientation(); + MapManager::NormalizeOrientation(o); + + pCreature->Relocate( + GetPositionX() + (x * cos(GetOrientation()) + y * sin(GetOrientation() + float(M_PI))), + GetPositionY() + (y * cos(GetOrientation()) + x * sin(GetOrientation())), + z + GetPositionZ() , + o); + + pCreature->SetHomePosition(pCreature->GetPositionX(), pCreature->GetPositionY(), pCreature->GetPositionZ(), pCreature->GetOrientation()); + + if(!pCreature->IsPositionValid()) + { + sLog->outError("Creature (guidlow %d, entry %d) not created. Suggested coordinates isn't valid (X: %f Y: %f)", pCreature->GetGUIDLow(), pCreature->GetEntry(), pCreature->GetPositionX(), pCreature->GetPositionY()); + delete pCreature; + return NULL; + } + + map->Add(pCreature); + m_NPCPassengerSet.insert(pCreature); + + pCreature->setActive(true); sScriptMgr->OnAddCreaturePassenger(this, pCreature); - return tguid; + return pCreature; } void Transport::UpdatePosition(MovementInfo* mi) @@ -675,6 +844,7 @@ void Transport::UpdatePosition(MovementInfo* mi) Relocate(transport_x, transport_y, transport_z, transport_o); UpdateNPCPositions(); + UpdatePlayerPositions(); } void Transport::UpdateNPCPositions() @@ -685,10 +855,47 @@ void Transport::UpdateNPCPositions() float x, y, z, o; o = GetOrientation() + npc->m_movementInfo.t_pos.m_orientation; + MapManager::NormalizeOrientation(o); x = GetPositionX() + (npc->m_movementInfo.t_pos.m_positionX * cos(GetOrientation()) + npc->m_movementInfo.t_pos.m_positionY * sin(GetOrientation() + M_PI)); y = GetPositionY() + (npc->m_movementInfo.t_pos.m_positionY * cos(GetOrientation()) + npc->m_movementInfo.t_pos.m_positionX * sin(GetOrientation())); z = GetPositionZ() + npc->m_movementInfo.t_pos.m_positionZ; npc->SetHomePosition(x, y, z, o); GetMap()->CreatureRelocation(npc, x, y, z, o, false); } + + for(PlayerSet::iterator itr = m_passengers.begin(); itr != m_passengers.end(); ++itr) + { + Player* plr = *itr; + + float x, y, z, o; + o = GetOrientation() + plr->m_movementInfo.t_pos.m_orientation; + MapManager::NormalizeOrientation(o); + x = GetPositionX() + (plr->m_movementInfo.t_pos.m_positionX * cos(GetOrientation()) + plr->m_movementInfo.t_pos.m_positionY * sin(GetOrientation() + M_PI)); + y = GetPositionY() + (plr->m_movementInfo.t_pos.m_positionY * cos(GetOrientation()) + plr->m_movementInfo.t_pos.m_positionX * sin(GetOrientation())); + z = GetPositionZ() + plr->m_movementInfo.t_pos.m_positionZ; + plr->Relocate(x, y, z, o); + UpdateData transData; + WorldPacket packet; + transData.BuildPacket(&packet); + plr->SendDirectMessage(&packet); + } +} + +void Transport::UpdatePlayerPositions() +{ + for (PlayerSet::iterator itr = m_passengers.begin(); itr != m_passengers.end(); ++itr) + { + Player* plr = *itr; + + float x, y, z, o; + o = GetOrientation() + plr->m_movementInfo.t_pos.m_orientation; + x = GetPositionX() + (plr->m_movementInfo.t_pos.m_positionX * cos(GetOrientation()) + plr->m_movementInfo.t_pos.m_positionY * sin(GetOrientation() + M_PI)); + y = GetPositionY() + (plr->m_movementInfo.t_pos.m_positionY * cos(GetOrientation()) + plr->m_movementInfo.t_pos.m_positionX * sin(GetOrientation())); + z = GetPositionZ() + plr->m_movementInfo.t_pos.m_positionZ; + plr->Relocate(x, y, z, o); + UpdateData transData; + WorldPacket packet; + transData.BuildPacket(&packet); + plr->SendDirectMessage(&packet); + } } diff --git a/src/server/game/Entities/Transport/Transport.h b/src/server/game/Entities/Transport/Transport.h index 12ca936..0902005 100644 --- a/src/server/game/Entities/Transport/Transport.h +++ b/src/server/game/Entities/Transport/Transport.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -37,10 +37,13 @@ class Transport : public GameObject typedef std::set CreatureSet; CreatureSet m_NPCPassengerSet; - uint32 AddNPCPassenger(uint32 tguid, uint32 entry, float x, float y, float z, float o, uint32 anim=0); + Creature* AddNPCPassenger(uint32 tguid, uint32 entry, float x, float y, float z, float o, uint32 anim=0); + Creature* AddNPCPassengerInInstance(uint32 entry, float x, float y, float z, float o, uint32 anim=0); void UpdatePosition(MovementInfo *mi); void UpdateNPCPositions(); + void UpdatePlayerPositions(); void BuildStartMovePacket(Map const *targetMap); + void BuildWaitMovePacket(Map const* targermap); void BuildStopMovePacket(Map const *targetMap); uint32 GetScriptId() const { return ScriptId; } private: diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 22adb55..3589555 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 8c31841..fc123b3 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -664,15 +664,23 @@ uint32 Unit::DealDamage(Unit* pVictim, uint32 damage, CleanDamage const* pCleanD if(GetTypeId() == TYPEID_PLAYER && this != pVictim) { - Player* pKiller = ToPlayer(); + Player* pPlayer = ToPlayer(); // in bg, count dmg if pVictim is also a player if(pVictim->GetTypeId() == TYPEID_PLAYER) - if(Battleground* pBG = pKiller->GetBattleground()) - pBG->UpdatePlayerScore(pKiller, SCORE_DAMAGE_DONE, damage); + { + if(Battleground* pBG = pPlayer->GetBattleground()) + { + pBG->UpdatePlayerScore(pPlayer, SCORE_DAMAGE_DONE, damage); + /** World of Warcraft Armory **/ + if(Battleground *bgV = ((Player*)pVictim)->GetBattleground()) + bgV->UpdatePlayerScore(((Player*)pVictim), SCORE_DAMAGE_TAKEN, damage); + /** World of Warcraft Armory **/ + } + } - pKiller->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE, damage, 0, pVictim); - pKiller->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT, damage); + pPlayer->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE, damage, 0, pVictim); + pPlayer->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT, damage); } if(pVictim->GetTypeId() == TYPEID_PLAYER) @@ -9857,10 +9865,6 @@ bool Unit::Attack(Unit* victim, bool meleeAttack) if(GetTypeId() == TYPEID_PLAYER && IsMounted()) return false; - // Check if is pacified and avoid actions - if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED)) - return false; - // nobody can attack GM in GM-mode if(victim->GetTypeId() == TYPEID_PLAYER) { @@ -10478,6 +10482,10 @@ int32 Unit::DealHeal(Unit* victim, uint32 addhealth) { player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED, gain); player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED, addhealth); + /** World of Warcraft Armory **/ + if(Battleground* pBG = player->GetBattleground()) + pBG->UpdatePlayerScore((Player*)victim, SCORE_HEALING_TAKEN, gain); + /** World of Warcraft Armory **/ } return gain; @@ -15834,7 +15842,7 @@ void Unit::Kill(Unit* pVictim, bool durabilityLoss) if(uint32 lootid = pCreature->GetCreatureInfo()->lootid) pLoot->FillLoot(lootid, LootTemplates_Creature, pLooter, false, false, pCreature->GetLootMode()); - pLoot->generateMoneyLoot(pCreature->GetCreatureInfo()->mingold, pCreature->GetCreatureInfo()->maxgold); + pLoot->generateMoneyLoot(pCreature->GetCreatureInfo()->mingold, pCreature->GetCreatureInfo()->maxgold, pPlayer->GetSession()->IsPremium()); } pPlayer->RewardPlayerAndGroupAtKill(pVictim, false); @@ -15962,7 +15970,10 @@ void Unit::Kill(Unit* pVictim, bool durabilityLoss) if(instanceMap->IsRaidOrHeroicDungeon()) { if(pCreature->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_INSTANCE_BIND) + { ((InstanceMap*)instanceMap)->PermBindAllPlayers(creditedPlayer); + creditedPlayer->CreateWowarmoryFeed(3, pCreature->GetCreatureInfo()->Entry, 0, 0); + } } else { time_t resettime = pCreature->GetRespawnTimeEx() + 2 * HOUR; if(InstanceSave *save = sInstanceSaveMgr->GetInstanceSave(pCreature->GetInstanceId())) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 00edc98..2dffe3a 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 341bf1a..5ff59da 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Entities/Vehicle/Vehicle.h b/src/server/game/Entities/Vehicle/Vehicle.h index 33b88c6..717eaeb 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.h +++ b/src/server/game/Entities/Vehicle/Vehicle.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 8b010ad..b12ce97 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Globals/ObjectAccessor.cpp b/src/server/game/Globals/ObjectAccessor.cpp index 8947999..53e49c7 100644 --- a/src/server/game/Globals/ObjectAccessor.cpp +++ b/src/server/game/Globals/ObjectAccessor.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Globals/ObjectAccessor.h b/src/server/game/Globals/ObjectAccessor.h index d0f12ee..03b97fc 100644 --- a/src/server/game/Globals/ObjectAccessor.h +++ b/src/server/game/Globals/ObjectAccessor.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index a91f82f..8592aad 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index f51fcf9..146fabc 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/Cells/Cell.h b/src/server/game/Grids/Cells/Cell.h index 8a045b1..33d0d78 100644 --- a/src/server/game/Grids/Cells/Cell.h +++ b/src/server/game/Grids/Cells/Cell.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/Cells/CellImpl.h b/src/server/game/Grids/Cells/CellImpl.h index 1b7788e..64dbd40 100644 --- a/src/server/game/Grids/Cells/CellImpl.h +++ b/src/server/game/Grids/Cells/CellImpl.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/Grid.h b/src/server/game/Grids/Grid.h index 20d6cd5..dc1d3a5 100644 --- a/src/server/game/Grids/Grid.h +++ b/src/server/game/Grids/Grid.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/GridDefines.h b/src/server/game/Grids/GridDefines.h index 09b425e..c6f8849 100644 --- a/src/server/game/Grids/GridDefines.h +++ b/src/server/game/Grids/GridDefines.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/GridLoader.h b/src/server/game/Grids/GridLoader.h index 508bf7e..ccf733c 100644 --- a/src/server/game/Grids/GridLoader.h +++ b/src/server/game/Grids/GridLoader.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/GridRefManager.h b/src/server/game/Grids/GridRefManager.h index ef9ac27..fa63641 100644 --- a/src/server/game/Grids/GridRefManager.h +++ b/src/server/game/Grids/GridRefManager.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/GridReference.h b/src/server/game/Grids/GridReference.h index e4d2cf8..3ba759b 100644 --- a/src/server/game/Grids/GridReference.h +++ b/src/server/game/Grids/GridReference.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/GridStates.cpp b/src/server/game/Grids/GridStates.cpp index bfb9aa7..66b4bad 100644 --- a/src/server/game/Grids/GridStates.cpp +++ b/src/server/game/Grids/GridStates.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/GridStates.h b/src/server/game/Grids/GridStates.h index ee8ec63..756e9ec 100644 --- a/src/server/game/Grids/GridStates.h +++ b/src/server/game/Grids/GridStates.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/NGrid.h b/src/server/game/Grids/NGrid.h index 9d9a6f2..8a90ce1 100644 --- a/src/server/game/Grids/NGrid.h +++ b/src/server/game/Grids/NGrid.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.cpp b/src/server/game/Grids/Notifiers/GridNotifiers.cpp index 7cdc432..d486664 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.cpp +++ b/src/server/game/Grids/Notifiers/GridNotifiers.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 9823fc4..16fb857 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h index 1e9821e..de2058a 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h +++ b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/ObjectGridLoader.cpp b/src/server/game/Grids/ObjectGridLoader.cpp index a27e3c1..a0103ae 100644 --- a/src/server/game/Grids/ObjectGridLoader.cpp +++ b/src/server/game/Grids/ObjectGridLoader.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Grids/ObjectGridLoader.h b/src/server/game/Grids/ObjectGridLoader.h index aaa5c77..d9d3e5d 100644 --- a/src/server/game/Grids/ObjectGridLoader.h +++ b/src/server/game/Grids/ObjectGridLoader.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index cecf1e4..b86223d 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index 04e4d7e..9d5503e 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 5fa083d..92539c7 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp index 9d81ce1..5a6310e 100644 --- a/src/server/game/Instances/InstanceSaveMgr.cpp +++ b/src/server/game/Instances/InstanceSaveMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Instances/InstanceSaveMgr.h b/src/server/game/Instances/InstanceSaveMgr.h index 9ae8ae7..cf042da 100644 --- a/src/server/game/Instances/InstanceSaveMgr.h +++ b/src/server/game/Instances/InstanceSaveMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 9f784ce..edc5e74 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 65248be..6ccf9b1 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index c1e8a12..1a4a702 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * @@ -625,16 +625,25 @@ void Loot::NotifyQuestItemRemoved(uint8 questIndex) } } -void Loot::generateMoneyLoot(uint32 minAmount, uint32 maxAmount) +void Loot::generateMoneyLoot(uint32 minAmount, uint32 maxAmount, bool IsPremium) { if(maxAmount > 0) { if(maxAmount <= minAmount) - gold = uint32(maxAmount * sWorld->getRate(RATE_DROP_MONEY)); + if (IsPremium) + gold = uint32(maxAmount * sWorld->getRate(RATE_DROP_MONEY) * sWorld->getRate(RATE_DROP_MONEY_PREMIUM)); + else + gold = uint32(maxAmount * sWorld->getRate(RATE_DROP_MONEY)); else if((maxAmount - minAmount) < 32700) - gold = uint32(urand(minAmount, maxAmount) * sWorld->getRate(RATE_DROP_MONEY)); + if (IsPremium) + gold = uint32(urand(minAmount, maxAmount) * sWorld->getRate(RATE_DROP_MONEY) * sWorld->getRate(RATE_DROP_MONEY_PREMIUM)); + else + gold = uint32(urand(minAmount, maxAmount) * sWorld->getRate(RATE_DROP_MONEY)); else - gold = uint32(urand(minAmount >> 8, maxAmount >> 8) * sWorld->getRate(RATE_DROP_MONEY)) << 8; + if (IsPremium) + gold = uint32(urand(minAmount >> 8, maxAmount >> 8) * sWorld->getRate(RATE_DROP_MONEY) * sWorld->getRate(RATE_DROP_MONEY_PREMIUM)) << 8; + else + gold = uint32(urand(minAmount >> 8, maxAmount >> 8) * sWorld->getRate(RATE_DROP_MONEY)) << 8; } } diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h index 084a423..ef016d4 100644 --- a/src/server/game/Loot/LootMgr.h +++ b/src/server/game/Loot/LootMgr.h @@ -332,7 +332,7 @@ struct Loot void AddLooter(uint64 GUID) { PlayersLooting.insert(GUID); } void RemoveLooter(uint64 GUID) { PlayersLooting.erase(GUID); } - void generateMoneyLoot(uint32 minAmount, uint32 maxAmount); + void generateMoneyLoot(uint32 minAmount, uint32 maxAmount, bool IsPremium); bool FillLoot(uint32 lootId, LootStore const& store, Player* lootOwner, bool personal, bool noEmptyError = false, uint16 lootMode = LOOT_MODE_DEFAULT); // Inserts the item into the loot (called by LootTemplate processors) diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp index 948ece6..2bb8527 100644 --- a/src/server/game/Mails/Mail.cpp +++ b/src/server/game/Mails/Mail.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * @@ -165,6 +165,92 @@ void MailDraft::SendReturnToSender(uint32 sender_acc, uint32 sender_guid, uint32 SendMailTo(trans, MailReceiver(receiver, receiver_guid), MailSender(MAIL_NORMAL, sender_guid), MAIL_CHECK_MASK_RETURNED, deliver_delay); } +void WorldSession::SendExternalMails() +{ + SQLTransaction trans = CharacterDatabase.BeginTransaction(); + CharacterDatabase.BeginTransaction(); + sLog->outString("EXTERNAL MAIL> Envoi des Mails Boutique en Attente..."); + QueryResult result = CharacterDatabase.Query("SELECT e.id, e.receiver, e.subject, e.message, e.money, i.item, i.count FROM mail_external e LEFT JOIN mail_external_items i ON e.id = i.mail_id ORDER BY e.id;"); + if(!result) + { + sLog->outString("EXTERNAL MAIL> Pas de Mails Boutique en Liste d'attente..."); + // delete result; + return; + } + else + { + uint32 last_id = 0; + MailDraft* mail = NULL; + uint32 last_receiver_guid; + + do + { + Field *fields = result->Fetch(); + uint32 id = fields[0].GetUInt32(); + uint64 receiver_guid = fields[1].GetUInt64(); + std::string subject = fields[2].GetString(); + std::string message = fields[3].GetString(); + uint32 money = fields[4].GetUInt32(); + uint32 itemId = fields[5].GetUInt32(); + uint32 itemCount = fields[6].GetUInt32(); + + Player *receiver = sObjectMgr->GetPlayer( receiver_guid ); + + if (id != last_id) + { + // send mail + if (last_id != 0) + { + sLog->outString("EXTERNAL MAIL> Envoi de mail boutique au personnage avec le GUID %d", last_receiver_guid); + mail->SendMailTo( trans, MailReceiver(last_receiver_guid),MailSender(MAIL_NORMAL, 0 , MAIL_STATIONERY_GM),MAIL_CHECK_MASK_RETURNED, NULL); + delete mail; + CharacterDatabase.PExecute("DELETE mail_external, mail_external_items FROM mail_external, mail_external_items WHERE mail_external_items.mail_id = mail_external.id AND mail_external.id = %u;", last_id); + sLog->outString("EXTERNAL MAIL> Mail Boutique Envoyé"); + } + + // create new mail + mail = new MailDraft( subject, message ); + + if(money) + { + sLog->outString("EXTERNAL MAIL> Envoi de Po"); + mail->AddMoney(money); + } + } + + if (itemId) + { + sLog->outString("EXTERNAL MAIL> Ajout %u de item avec l'ID %u", itemCount, itemId); + Item* mailItem = Item::CreateItem( itemId, itemCount, receiver ); + mailItem->SaveToDB(trans); + mail->AddItem(mailItem); + } + + last_id = id; + last_receiver_guid = receiver_guid; + + } + while( result->NextRow() ); + + // we only send a mail when mail_id!=last_mail_id, so we need to send the very last mail here: + if (last_id != 0) + { + // send last mail + sLog->outString("EXTERNAL MAIL> Envoi de Mails boutique au personnage avec le GUID %d", last_receiver_guid); + + mail->SendMailTo( trans, MailReceiver(last_receiver_guid),MailSender(MAIL_NORMAL, 0 , MAIL_STATIONERY_GM),MAIL_CHECK_MASK_RETURNED, NULL); + delete mail; + CharacterDatabase.PExecute("DELETE mail_external, mail_external_items FROM mail_external, mail_external_items WHERE mail_external_items.mail_id = mail_external.id AND mail_external.id = %u;", last_id); + sLog->outString("EXTERNAL MAIL> Mails Boutique Envoyé"); + } + } + + CharacterDatabase.CommitTransaction(trans); + //delete result; + sLog->outString("EXTERNAL MAIL> Tous les Mails Boutique sont Envoyés..."); +} + + void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked, uint32 deliver_delay) { Player* pReceiver = receiver.GetPlayer(); // can be NULL diff --git a/src/server/game/Mails/Mail.h b/src/server/game/Mails/Mail.h index 18eb1b9..e04a5a5 100644 --- a/src/server/game/Mails/Mail.h +++ b/src/server/game/Mails/Mail.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 209dd1b..f7a8bd4 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -360,6 +360,31 @@ void Map::LoadGrid(float x, float y) EnsureGridLoaded(cell); } +void Map::SendInitTransportsInInstance(Player* player) +{ + // Hack to send out transports + MapManager::TransportMap& tmap = sMapMgr->m_TransportsByInstanceIdMap; + + // no transports at map + if(tmap.find(player->GetInstanceId()) == tmap.end()) + return; + + UpdateData transData; + + MapManager::TransportSet& tset = tmap[player->GetInstanceId()]; + + for(MapManager::TransportSet::const_iterator i = tset.begin(); i != tset.end(); ++i) + { + // send data for current transport in other place + if((*i) != player->GetTransport() && (*i)->GetInstanceId() == GetInstanceId()) + (*i)->BuildCreateUpdateBlockForPlayer(&transData, player); + } + + WorldPacket packet; + transData.BuildPacket(&packet); + player->GetSession()->SendPacket(&packet); +} + bool Map::Add(Player* pPlayer) { ASSERT(pPlayer->GetMap() == this); @@ -382,6 +407,9 @@ bool Map::Add(Player* pPlayer) SendInitSelf(pPlayer); SendInitTransports(pPlayer); + // And send init transport in instance + if(Instanceable()) + SendInitTransportsInInstance(pPlayer); pPlayer->m_clientGUIDs.clear(); pPlayer->UpdateObjectVisibility(false); diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index 2d1f23c..740ab97 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -466,6 +466,7 @@ class Map : public GridRefManager void SendInitTransports(Player* player); void SendRemoveTransports(Player* player); + void SendInitTransportsInInstance(Player* player); bool CreatureCellRelocation(Creature* creature, Cell new_cell); diff --git a/src/server/game/Maps/MapInstanced.cpp b/src/server/game/Maps/MapInstanced.cpp index 24fd186..20ebc67 100644 --- a/src/server/game/Maps/MapInstanced.cpp +++ b/src/server/game/Maps/MapInstanced.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Maps/MapInstanced.h b/src/server/game/Maps/MapInstanced.h index ab47b20..6956d70 100644 --- a/src/server/game/Maps/MapInstanced.h +++ b/src/server/game/Maps/MapInstanced.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp index 517bbf6..cbcbff9 100644 --- a/src/server/game/Maps/MapManager.cpp +++ b/src/server/game/Maps/MapManager.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h index 2609cb3..67c9a38 100644 --- a/src/server/game/Maps/MapManager.h +++ b/src/server/game/Maps/MapManager.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -117,11 +117,19 @@ class MapManager void LoadTransports(); void LoadTransportNPCs(); + //Load transport to instance + Transport* LoadTransportInMap(Map* instance, uint32 goEntry, uint32 period); + + void UnLoadTransportFromMap(Transport* t); + void LoadTransportForPlayers(Player* player); + void UnLoadTransportForPlayers(Player* player); + typedef std::set TransportSet; TransportSet m_Transports; typedef std::map TransportMap; TransportMap m_TransportsByMap; + TransportMap m_TransportsByInstanceIdMap; bool CanPlayerEnter(uint32 mapid, Player* player, bool loginCheck = false); void InitializeVisibilityDistanceInfo(); diff --git a/src/server/game/Maps/MapRefManager.h b/src/server/game/Maps/MapRefManager.h index d23ba5d..1c9c7a7 100644 --- a/src/server/game/Maps/MapRefManager.h +++ b/src/server/game/Maps/MapRefManager.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Maps/MapReference.h b/src/server/game/Maps/MapReference.h index e90a4b6..9cb460d 100644 --- a/src/server/game/Maps/MapReference.h +++ b/src/server/game/Maps/MapReference.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Maps/MapUpdater.cpp b/src/server/game/Maps/MapUpdater.cpp index 4906885..368429f 100644 --- a/src/server/game/Maps/MapUpdater.cpp +++ b/src/server/game/Maps/MapUpdater.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Maps/MapUpdater.h b/src/server/game/Maps/MapUpdater.h index bac183b..cffa85b 100644 --- a/src/server/game/Maps/MapUpdater.h +++ b/src/server/game/Maps/MapUpdater.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Maps/ZoneScript.h b/src/server/game/Maps/ZoneScript.h index 1423bc6..ac26a47 100644 --- a/src/server/game/Maps/ZoneScript.h +++ b/src/server/game/Maps/ZoneScript.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Miscellaneous/Formulas.h b/src/server/game/Miscellaneous/Formulas.h index db16d9c..b9c806c 100644 --- a/src/server/game/Miscellaneous/Formulas.h +++ b/src/server/game/Miscellaneous/Formulas.h @@ -179,6 +179,8 @@ namespace Trinity } gain = uint32(gain * sWorld->getRate(RATE_XP_KILL)); + float premium_rate = pl->GetSession()->IsPremium() ? sWorld->getRate(RATE_XP_KILL_PREMIUM) : 1.0f; + gain = uint32(gain * sWorld->getRate(RATE_XP_KILL)*premium_rate); } sScriptMgr->OnGainCalculation(gain, pl, u); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 79036e9..86aa05e 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index a7cabbf..5d2bb4f 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -3106,7 +3106,7 @@ enum SummonType SUMMON_TYPE_WILD3 = 8, SUMMON_TYPE_VEHICLE = 9, SUMMON_TYPE_VEHICLE2 = 10, - SUMMON_TYPE_LIGHTWELL = 11, + SUMMON_TYPE_OBJECT = 11, }; enum EventId @@ -3366,4 +3366,4 @@ enum RemoveMethod GROUP_REMOVEMETHOD_LEAVE = 2, }; -#endif +#endif \ No newline at end of file diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index 96b5c0c..3fca673 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Movement/MotionMaster.h b/src/server/game/Movement/MotionMaster.h index 99976d9..945af6f 100644 --- a/src/server/game/Movement/MotionMaster.h +++ b/src/server/game/Movement/MotionMaster.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/ChargeMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/ChargeMovementGenerator.cpp index aedb9fa..77149fe 100644 --- a/src/server/game/Movement/MovementGenerators/ChargeMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/ChargeMovementGenerator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/ChargeMovementGenerator.h b/src/server/game/Movement/MovementGenerators/ChargeMovementGenerator.h index 6330efc..52946f1 100644 --- a/src/server/game/Movement/MovementGenerators/ChargeMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/ChargeMovementGenerator.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp index 6b8d293..8a5de57 100644 --- a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h index 7db7568..8ccc6a8 100644 --- a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp index b185be9..367ba88 100644 --- a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h index e08b499..c2b58fc 100644 --- a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp index efa57a9..3eded44 100644 --- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h index 170c26c..039a72e 100644 --- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.cpp index a3c8804..4673d86 100644 --- a/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.h b/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.h index 6c672de..f5dad99 100644 --- a/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp index f9b15c7..bd514e7 100644 --- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h index 14419b7..70641c4 100644 --- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp index ae78713..ea9d7bb 100644 --- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h index 083cd36..318c7d0 100644 --- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index 7259ac1..aac8003 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h index 41ceb98..cc07129 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index 8318b14..48e080c 100644 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h index b2b2ff6..3862338 100644 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Pathfinding/PathFinder.cpp b/src/server/game/Movement/Pathfinding/PathFinder.cpp index 7a700f6..9d79271 100644 --- a/src/server/game/Movement/Pathfinding/PathFinder.cpp +++ b/src/server/game/Movement/Pathfinding/PathFinder.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp index 65ad024..8ac48c4 100644 --- a/src/server/game/Movement/Spline/MoveSpline.cpp +++ b/src/server/game/Movement/Spline/MoveSpline.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MoveSpline.h b/src/server/game/Movement/Spline/MoveSpline.h index e8601db..edbbba5 100644 --- a/src/server/game/Movement/Spline/MoveSpline.h +++ b/src/server/game/Movement/Spline/MoveSpline.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h index 7b4dbfd..7fc40e3 100644 --- a/src/server/game/Movement/Spline/MoveSplineFlag.h +++ b/src/server/game/Movement/Spline/MoveSplineFlag.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index 588e3e1..515760b 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h index 649f0d3..c697eab 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.h +++ b/src/server/game/Movement/Spline/MoveSplineInit.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MoveSplineInitArgs.h b/src/server/game/Movement/Spline/MoveSplineInitArgs.h index ba08738..79bcac4 100644 --- a/src/server/game/Movement/Spline/MoveSplineInitArgs.h +++ b/src/server/game/Movement/Spline/MoveSplineInitArgs.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp index bc1a185..a813174 100644 --- a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp +++ b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MovementPacketBuilder.h b/src/server/game/Movement/Spline/MovementPacketBuilder.h index 37ee2e0..53f0cc0 100644 --- a/src/server/game/Movement/Spline/MovementPacketBuilder.h +++ b/src/server/game/Movement/Spline/MovementPacketBuilder.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MovementTypedefs.h b/src/server/game/Movement/Spline/MovementTypedefs.h index 8024ceb..680a6ea 100644 --- a/src/server/game/Movement/Spline/MovementTypedefs.h +++ b/src/server/game/Movement/Spline/MovementTypedefs.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/MovementUtil.cpp b/src/server/game/Movement/Spline/MovementUtil.cpp index a1fb7fe..87b2657 100644 --- a/src/server/game/Movement/Spline/MovementUtil.cpp +++ b/src/server/game/Movement/Spline/MovementUtil.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/Spline.cpp b/src/server/game/Movement/Spline/Spline.cpp index 073436b..6a92f16 100644 --- a/src/server/game/Movement/Spline/Spline.cpp +++ b/src/server/game/Movement/Spline/Spline.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/Spline.h b/src/server/game/Movement/Spline/Spline.h index f484a16..0ce81f5 100644 --- a/src/server/game/Movement/Spline/Spline.h +++ b/src/server/game/Movement/Spline/Spline.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Movement/Spline/SplineImpl.h b/src/server/game/Movement/Spline/SplineImpl.h index bf825b8..cb28db7 100644 --- a/src/server/game/Movement/Spline/SplineImpl.h +++ b/src/server/game/Movement/Spline/SplineImpl.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp index 8c6360b..ff3b6d9 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.h b/src/server/game/OutdoorPvP/OutdoorPvP.h index 9897d90..1ad812f 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.h +++ b/src/server/game/OutdoorPvP/OutdoorPvP.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp index 69baede..72fb8e0 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/PlayerMovementChecker/MovementChecker.cpp b/src/server/game/PlayerMovementChecker/MovementChecker.cpp index 6342dc0..65d4d7c 100644 --- a/src/server/game/PlayerMovementChecker/MovementChecker.cpp +++ b/src/server/game/PlayerMovementChecker/MovementChecker.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/PlayerMovementChecker/MovementChecker.h b/src/server/game/PlayerMovementChecker/MovementChecker.h index 0d5ca60..cfbaffb 100644 --- a/src/server/game/PlayerMovementChecker/MovementChecker.h +++ b/src/server/game/PlayerMovementChecker/MovementChecker.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index 26f01ea..a609723 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/PrecompiledHeaders/gamePCH.cpp b/src/server/game/PrecompiledHeaders/gamePCH.cpp index fb4c8fb..944c72e 100644 --- a/src/server/game/PrecompiledHeaders/gamePCH.cpp +++ b/src/server/game/PrecompiledHeaders/gamePCH.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/PrecompiledHeaders/gamePCH.h b/src/server/game/PrecompiledHeaders/gamePCH.h index f52ffe8..7094ed3 100644 --- a/src/server/game/PrecompiledHeaders/gamePCH.h +++ b/src/server/game/PrecompiledHeaders/gamePCH.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 4129e7d..d059a77 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 4b5f2c6..1cba969 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index 755d465..98813de 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp index 6c03a6b..3ebe7db 100644 --- a/src/server/game/Scripting/MapScripts.cpp +++ b/src/server/game/Scripting/MapScripts.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index 5b855dd..6e10318 100644 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -29,6 +29,7 @@ void AddSC_item_spell_scripts(); void AddSC_SmartSCripts(); //Commands +void AddSC_vip_commandscript(); void AddSC_account_commandscript(); void AddSC_achievement_commandscript(); void AddSC_debug_commandscript(); @@ -49,6 +50,27 @@ void AddSC_gps_commandscript(); #ifdef SCRIPTS //world +void AddSC_buffnpc(); +void AddSC_npc_welcome(); +void AddSC_custom_npc(); +void AddSC_professionnpc(); +void AddSC_npc_rapidchange(); +void AddSC_npc_beastmaster(); +void AddSC_Change_Character(); +void AddSC_npc_honneur_sceau_de_champion_fun(); +void AddSC_Item_reset_instance(); +void AddSC_Reset_Pvp(); +void AddSC_npc_shop(); +void AddSC_npc_marquegoulet(); +void AddSC_npc_magicien(); +void AddSC_npc_roinagas(); +void AddSC_reputation(); +void AddSC_npc_shadowmourn(); +void AddSC_npcevent(); +void AddSC_npcevent2(); +void AddSC_bienvenue(); +void AddSC_npc_teleport(); +void AddSC_NPC_Transmogrify(); void AddSC_areatrigger_scripts(); void AddSC_emerald_dragons(); void AddSC_generic_creature(); @@ -468,6 +490,7 @@ void AddSC_boss_marwyn(); void AddSC_boss_lich_king_hr(); void AddSC_boss_lord_marrowgar(); // Icecrown Citadel void AddSC_boss_lady_deathwhisper(); +void AddSC_boss_gunship_battle(); void AddSC_boss_deathbringer_saurfang(); void AddSC_boss_festergut(); void AddSC_boss_rotface(); @@ -535,7 +558,7 @@ void AddSC_instance_slave_pens(); void AddSC_boss_gruul(); //Gruul's Lair void AddSC_boss_high_king_maulgar(); void AddSC_instance_gruuls_lair(); -void AddSC_boss_broggok(); //HC Blood Furnace +void AddSC_boss_broggok(); //HC Blood Furnace void AddSC_boss_kelidan_the_breaker(); void AddSC_boss_the_maker(); void AddSC_instance_blood_furnace(); @@ -591,6 +614,7 @@ void AddSC_wintergrasp(); // player void AddSC_chat_log(); + #endif void AddScripts() @@ -627,6 +651,7 @@ void AddSpellScripts() void AddCommandScripts() { + AddSC_vip_commandscript(); AddSC_account_commandscript(); AddSC_achievement_commandscript(); AddSC_debug_commandscript(); @@ -649,6 +674,27 @@ void AddCommandScripts() void AddWorldScripts() { #ifdef SCRIPTS + AddSC_buffnpc(); + AddSC_npc_welcome(); + AddSC_custom_npc(); + AddSC_professionnpc(); + AddSC_npc_rapidchange(); + AddSC_npc_beastmaster(); + AddSC_Change_Character(); + AddSC_npc_honneur_sceau_de_champion_fun(); + AddSC_Item_reset_instance(); + AddSC_Reset_Pvp(); + AddSC_npc_shop(); + AddSC_npc_marquegoulet(); + AddSC_npc_magicien(); + AddSC_npc_roinagas(); + AddSC_reputation(); + AddSC_npc_shadowmourn(); + AddSC_npcevent(); + AddSC_npcevent2(); + AddSC_bienvenue(); + AddSC_npc_teleport(); + AddSC_NPC_Transmogrify(); AddSC_areatrigger_scripts(); AddSC_emerald_dragons(); AddSC_generic_creature(); @@ -706,6 +752,7 @@ void AddEasternKingdomsScripts() AddSC_boss_ebonroc(); AddSC_boss_flamegor(); AddSC_boss_chromaggus(); + AddSC_boss_nefarian(); AddSC_boss_victor_nefarius(); AddSC_boss_mr_smite(); @@ -1169,6 +1216,7 @@ void AddNorthrendScripts() AddSC_boss_lich_king_hr(); AddSC_boss_lord_marrowgar(); // Icecrown Citadel AddSC_boss_lady_deathwhisper(); + AddSC_boss_gunship_battle(); AddSC_boss_deathbringer_saurfang(); AddSC_boss_festergut(); AddSC_boss_rotface(); diff --git a/src/server/game/Scripting/ScriptLoader.h b/src/server/game/Scripting/ScriptLoader.h index 578c8d2..f6a625f 100644 --- a/src/server/game/Scripting/ScriptLoader.h +++ b/src/server/game/Scripting/ScriptLoader.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index ce1e0b0..f0d91ab 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -16,6 +16,7 @@ #include "ObjectMgr.h" #include "OutdoorPvPMgr.h" #include "ScriptLoader.h" +#include "sc_npc_teleport.h" #include "ScriptSystem.h" #include "Transport.h" @@ -136,6 +137,7 @@ void ScriptMgr::Initialize() uint32 oldMSTime = getMSTime(); LoadDatabase(); + LoadNpcTele(); sLog->outString("Loading C++ scripts"); @@ -720,6 +722,7 @@ bool ScriptMgr::OnQuestReward(Player* player, Creature* creature, Quest const* q return tmpscript->OnQuestReward(player, creature, quest, opt); } + uint32 ScriptMgr::GetDialogStatus(Player* player, Creature* creature) { ASSERT(player); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 8cf8569..07d7a4d 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Scripting/ScriptSystem.cpp b/src/server/game/Scripting/ScriptSystem.cpp index 7f28519..4395129 100644 --- a/src/server/game/Scripting/ScriptSystem.cpp +++ b/src/server/game/Scripting/ScriptSystem.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Scripting/ScriptSystem.h b/src/server/game/Scripting/ScriptSystem.h index 8f9e312..bb33304 100644 --- a/src/server/game/Scripting/ScriptSystem.h +++ b/src/server/game/Scripting/ScriptSystem.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/AddonHandler.cpp b/src/server/game/Server/Protocol/Handlers/AddonHandler.cpp index a6a6717..1005ac7 100644 --- a/src/server/game/Server/Protocol/Handlers/AddonHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/AddonHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/AddonHandler.h b/src/server/game/Server/Protocol/Handlers/AddonHandler.h index 104e19b..b784ed2 100644 --- a/src/server/game/Server/Protocol/Handlers/AddonHandler.h +++ b/src/server/game/Server/Protocol/Handlers/AddonHandler.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/ArenaTeamHandler.cpp b/src/server/game/Server/Protocol/Handlers/ArenaTeamHandler.cpp index e53267c..b8c8685 100644 --- a/src/server/game/Server/Protocol/Handlers/ArenaTeamHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/ArenaTeamHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp b/src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp index 6f6bb29..69d4b10 100644 --- a/src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/AuthHandler.cpp b/src/server/game/Server/Protocol/Handlers/AuthHandler.cpp index d742efa..a565d31 100644 --- a/src/server/game/Server/Protocol/Handlers/AuthHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/AuthHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp b/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp index 4e6ced9..15d30ed 100644 --- a/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/CalendarHandler.cpp b/src/server/game/Server/Protocol/Handlers/CalendarHandler.cpp index 1afcabc..6c09ecd 100644 --- a/src/server/game/Server/Protocol/Handlers/CalendarHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/CalendarHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp b/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp index 0ad35d0..29f4ca5 100644 --- a/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp index 5e6ea3b..5bf3327 100644 --- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -846,6 +846,20 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder) SendPacket(&data); sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent motd (SMSG_MOTD)"); + if (pCurrChar->GetSession()->IsPremium()) + { + QueryResult premiumQuery = LoginDatabase.PQuery ("SELECT premium FROM account WHERE id = '%u' LIMIT 1", GetAccountId()); + Field* fields = premiumQuery->Fetch(); + uint32 premiumResult = fields[0].GetUInt32(); + + time_t premiumTmp = premiumResult; + tm *lpTimeStamp = localtime(&premiumTmp); + char premiumTime[18]; + strftime(premiumTime, 18, "%d.%m.%Y, %H:%M", lpTimeStamp); + + SendNotification(15000, premiumTime); + } + // send server info if(sWorld->getIntConfig(CONFIG_ENABLE_SINFO_LOGIN) == 1) chH.PSendSysMessage(_FULLVERSION); diff --git a/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp b/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp index 9659630..ba7454d 100644 --- a/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -33,6 +33,7 @@ #include "Util.h" #include "ScriptMgr.h" + bool WorldSession::processChatmessageFurtherAfterSecurityChecks(std::string& msg, uint32 lang) { if(lang != LANG_ADDON) diff --git a/src/server/game/Server/Protocol/Handlers/CombatHandler.cpp b/src/server/game/Server/Protocol/Handlers/CombatHandler.cpp index bfaf5d7..3c215e2 100644 --- a/src/server/game/Server/Protocol/Handlers/CombatHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/CombatHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/DuelHandler.cpp b/src/server/game/Server/Protocol/Handlers/DuelHandler.cpp index 5c15a6e..28a7c09 100644 --- a/src/server/game/Server/Protocol/Handlers/DuelHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/DuelHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -38,6 +38,19 @@ void WorldSession::HandleDuelAcceptedOpcode(WorldPacket& recvPacket) pl->duel->startTimer = now; plTarget->duel->startTimer = now; + /********* Add Custom ADDR Reset Duel ***************/ + pl->SetHealth(pl->GetMaxHealth()); + plTarget->SetHealth(plTarget->GetMaxHealth()); + if(pl->getPowerType() == POWER_MANA) + pl->SetPower(POWER_MANA, pl->GetMaxPower(POWER_MANA)); + if(plTarget->getPowerType() == POWER_MANA) + plTarget->SetPower(POWER_MANA, plTarget->GetMaxPower(POWER_MANA)); + if(!pl->GetMap()->IsDungeon()) + { + pl->RemoveArenaSpellCooldowns(); + plTarget->RemoveArenaSpellCooldowns(); + } + pl->SendDuelCountdown(3000); plTarget->SendDuelCountdown(3000); } diff --git a/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp b/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp index 899aac9..fa8ffcd 100644 --- a/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/GuildHandler.cpp b/src/server/game/Server/Protocol/Handlers/GuildHandler.cpp index 3169335..914cc00 100644 --- a/src/server/game/Server/Protocol/Handlers/GuildHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/GuildHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp index 9549e1b..a85f1f2 100644 --- a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp b/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp index b7d6ce6..0ddc60d 100644 --- a/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/LootHandler.cpp b/src/server/game/Server/Protocol/Handlers/LootHandler.cpp index be14c98..e1de147 100644 --- a/src/server/game/Server/Protocol/Handlers/LootHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/LootHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/MailHandler.cpp b/src/server/game/Server/Protocol/Handlers/MailHandler.cpp index cc565f0..54a579c 100644 --- a/src/server/game/Server/Protocol/Handlers/MailHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MailHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp index d15d058..87659fc 100644 --- a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp index ab09bcb..8547d9f 100644 --- a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp b/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp index 6d02f58..3a5853c 100644 --- a/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/NPCHandler.h b/src/server/game/Server/Protocol/Handlers/NPCHandler.h index 5ce2e70..457455b 100644 --- a/src/server/game/Server/Protocol/Handlers/NPCHandler.h +++ b/src/server/game/Server/Protocol/Handlers/NPCHandler.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp index 6f43f9d..fb10728 100644 --- a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp b/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp index 69b6c30..ba5ea41 100644 --- a/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/QueryHandler.cpp b/src/server/game/Server/Protocol/Handlers/QueryHandler.cpp index 1e01223..159451f 100644 --- a/src/server/game/Server/Protocol/Handlers/QueryHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/QueryHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp index d8dac67..560208e 100644 --- a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/SkillHandler.cpp b/src/server/game/Server/Protocol/Handlers/SkillHandler.cpp index 8655880..3ec7de8 100644 --- a/src/server/game/Server/Protocol/Handlers/SkillHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/SkillHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp index 028defa..3f4a41a 100644 --- a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/TaxiHandler.cpp b/src/server/game/Server/Protocol/Handlers/TaxiHandler.cpp index 0f67fa5..8f12f95 100644 --- a/src/server/game/Server/Protocol/Handlers/TaxiHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/TaxiHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/TicketHandler.cpp b/src/server/game/Server/Protocol/Handlers/TicketHandler.cpp index 43185d0..f3984bf 100644 --- a/src/server/game/Server/Protocol/Handlers/TicketHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/TicketHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/TradeHandler.cpp b/src/server/game/Server/Protocol/Handlers/TradeHandler.cpp index 61078d6..1284094 100644 --- a/src/server/game/Server/Protocol/Handlers/TradeHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/TradeHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/VehicleHandler.cpp b/src/server/game/Server/Protocol/Handlers/VehicleHandler.cpp index dc76618..7a63f70 100644 --- a/src/server/game/Server/Protocol/Handlers/VehicleHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/VehicleHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Handlers/VoiceChatHandler.cpp b/src/server/game/Server/Protocol/Handlers/VoiceChatHandler.cpp index 485ba18..b5d718c 100644 --- a/src/server/game/Server/Protocol/Handlers/VoiceChatHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/VoiceChatHandler.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index b678872..ef953dc 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index c819814..024581b 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2012 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index d9a8d08..6238dff 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -78,9 +78,9 @@ bool WorldSessionFilter::Process(WorldPacket* packet) } /// WorldSession constructor -WorldSession::WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter): +WorldSession::WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, bool ispremium, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter): m_muteTime(mute_time), m_timeOutTime(0), _player(NULL), m_Socket(sock), -_security(sec), _accountId(id), m_expansion(expansion), _logoutTime(0), +_security(sec), _ispremium(ispremium), _accountId(id), m_expansion(expansion), _logoutTime(0), m_inQueue(false), m_playerLoading(false), m_playerLogout(false), m_playerRecentlyLogout(false), m_playerSave(false), m_sessionDbcLocale(sWorld->GetAvailableDbcLocale(locale)), diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 3d8c8b1..996a13f 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -208,7 +208,7 @@ class WorldSession { friend class WardenBase; public: - WorldSession(uint32 id, WorldSocket* pWS, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter); + WorldSession(uint32 id, WorldSocket* pWS, AccountTypes sec, bool ispremium, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter); ~WorldSession(); bool PlayerLoading() const { return m_playerLoading; } @@ -236,6 +236,7 @@ class WorldSession void SendClientCacheVersion(uint32 version); AccountTypes GetSecurity() const { return _security; } + bool IsPremium() const { return _ispremium; } uint32 GetAccountId() const { return _accountId; } Player* GetPlayer() const { return _player; } char const* GetPlayerName() const; @@ -325,6 +326,8 @@ class WorldSession } //used with item_page table bool SendItemInfo(uint32 itemid, WorldPacket data); + // external mail + static void SendExternalMails(); //auction void SendAuctionHello(uint64 guid, Creature* unit); void SendAuctionCommandResult(uint32 auctionId, uint32 Action, uint32 ErrorCode, uint32 bidError = 0); @@ -935,6 +938,7 @@ class WorldSession AccountTypes _security; uint32 _accountId; uint8 m_expansion; + bool _ispremium; time_t _logoutTime; bool m_inQueue; // session wait in auth.queue diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 57a71e3..a3ef5ac 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -770,6 +770,7 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket) //uint8 expansion = 0; LocaleConstant locale; std::string account; + bool isPremium = false; SHA1Hash sha1; BigNumber v, s, g, N; WorldPacket packet, SendAddonPacked; @@ -928,6 +929,17 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket) return -1; } + QueryResult premresult = + LoginDatabase.PQuery ("SELECT 1 " + "FROM account " + "WHERE id = '%u' " + "AND premium > UNIX_TIMESTAMP()", + id); + if (premresult) // if account premium + { + isPremium = true; + } + // Check locked state for server AccountTypes allowedAccountType = sWorld->GetPlayerSecurityLimit(); sLog->outDebug(LOG_FILTER_NETWORKIO, "Allowed Level: %u Player Level %u", allowedAccountType, AccountTypes(security)); @@ -983,7 +995,7 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket) safe_account.c_str()); // NOTE ATM the socket is single-threaded, have this in mind ... - ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), expansion, mutetime, locale, recruiter), -1); + ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), isPremium, expansion, mutetime, locale, recruiter), -1); m_Crypt.Init(&K); diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h index 6d24060..ecfedc4 100644 --- a/src/server/game/Server/WorldSocket.h +++ b/src/server/game/Server/WorldSocket.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/WorldSocketMgr.cpp b/src/server/game/Server/WorldSocketMgr.cpp index eff9e18..baad453 100644 --- a/src/server/game/Server/WorldSocketMgr.cpp +++ b/src/server/game/Server/WorldSocketMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Server/WorldSocketMgr.h b/src/server/game/Server/WorldSocketMgr.h index 0e8c5ba..d83a037 100644 --- a/src/server/game/Server/WorldSocketMgr.h +++ b/src/server/game/Server/WorldSocketMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Skills/SkillDiscovery.cpp b/src/server/game/Skills/SkillDiscovery.cpp index e4e0d98..d28c8be 100644 --- a/src/server/game/Skills/SkillDiscovery.cpp +++ b/src/server/game/Skills/SkillDiscovery.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Skills/SkillDiscovery.h b/src/server/game/Skills/SkillDiscovery.h index 947f03d..e29b75a 100644 --- a/src/server/game/Skills/SkillDiscovery.h +++ b/src/server/game/Skills/SkillDiscovery.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Skills/SkillExtraItems.cpp b/src/server/game/Skills/SkillExtraItems.cpp index f748bba..95257e4 100644 --- a/src/server/game/Skills/SkillExtraItems.cpp +++ b/src/server/game/Skills/SkillExtraItems.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Skills/SkillExtraItems.h b/src/server/game/Skills/SkillExtraItems.h index 7ef7e05..566bad3 100644 --- a/src/server/game/Skills/SkillExtraItems.h +++ b/src/server/game/Skills/SkillExtraItems.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 5c5519c..3399159 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index ad8c22f..07685dc 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -2627,10 +2627,7 @@ void AuraEffect::HandleAuraModPacify(AuraApplication const* aurApp, uint8 mode, Unit* target = aurApp->GetTarget(); if(apply) - { target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED); - target->AttackStop(); - } else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 82e444f..5940995 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 9e2c698..1996f09 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h index ae5229d..203fea7 100644 --- a/src/server/game/Spells/Auras/SpellAuras.h +++ b/src/server/game/Spells/Auras/SpellAuras.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index dc26f0e..b6297fa 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -7095,8 +7095,8 @@ int32 Spell::CalculateDamageDone(Unit* unit, const uint32 effectMask, float * mu if(IsAreaEffectTarget[m_spellInfo->EffectImplicitTargetA[i]] || IsAreaEffectTarget[m_spellInfo->EffectImplicitTargetB[i]]) { if(m_caster->GetTypeId() == TYPEID_UNIT) - m_damage = int32(float(m_damage) * unit->GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE, m_spellInfo->SchoolMask)); m_damage = int32(float(m_damage) * unit->GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE, m_spellInfo->SchoolMask)); + m_damage = int32(float(m_damage) * unit->GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE, m_spellInfo->SchoolMask)); if(m_caster->GetTypeId() == TYPEID_PLAYER) { diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 3442371..a90915e 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index a692d66..263739d 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -3170,9 +3170,6 @@ void Spell::EffectSummonType(SpellEffIndex effIndex) case SUMMON_TYPE_VEHICLE2: summon = m_caster->GetMap()->SummonCreature(entry, pos, properties, duration, m_originalCaster, m_spellInfo->Id); break; - // Summon Lightwell and add MaxHealth Value - case SUMMON_TYPE_LIGHTWELL: - damage = m_caster->CountPctFromMaxHealth(50); case SUMMON_TYPE_TOTEM: { summon = m_caster->GetMap()->SummonCreature(entry, pos, properties, duration, m_originalCaster, m_spellInfo->Id); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 7304e1c..15954d9 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * @@ -4309,6 +4309,12 @@ void SpellMgr::LoadSpellCustomAttr() case 54172: // Divine Storm (Heal) spellInfo->MaxAffectedTargets = 3; break; + case 68645: // Rocket Pack! + //spellInfo->EffectMiscValueB[0] = 70; + spellInfo->Effect[0] = SPELL_EFFECT_KNOCK_BACK_DEST; + spellInfo->EffectMiscValue[0] = -250; + spellInfo->EffectBasePoints[0] = 150; + break; case 38310: // Multi-Shot case 53385: // Divine Storm (Damage) spellInfo->MaxAffectedTargets = 4; @@ -5160,4 +5166,4 @@ void SpellMgr::LoadSpellLinked() sLog->outString(">> Loaded linked spells in %u ms", GetMSTimeDiffToNow(oldMSTime)); sLog->outString(); -} \ No newline at end of file +} diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 2f495fd..248eeab 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp index fb9ac8e..cc38cae 100644 --- a/src/server/game/Spells/SpellScript.cpp +++ b/src/server/game/Spells/SpellScript.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h index 54ea552..e67131e 100644 --- a/src/server/game/Spells/SpellScript.h +++ b/src/server/game/Spells/SpellScript.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp index 8fea9d5..2e3466e 100644 --- a/src/server/game/Texts/CreatureTextMgr.cpp +++ b/src/server/game/Texts/CreatureTextMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Tickets/TicketMgr.cpp b/src/server/game/Tickets/TicketMgr.cpp index 565e40d..b86ca40 100644 --- a/src/server/game/Tickets/TicketMgr.cpp +++ b/src/server/game/Tickets/TicketMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/Tools/PlayerDump.cpp b/src/server/game/Tools/PlayerDump.cpp index 09d270a..9cb4af6 100644 --- a/src/server/game/Tools/PlayerDump.cpp +++ b/src/server/game/Tools/PlayerDump.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Tools/PlayerDump.h b/src/server/game/Tools/PlayerDump.h index 39d8c4d..f83dc6f 100644 --- a/src/server/game/Tools/PlayerDump.h +++ b/src/server/game/Tools/PlayerDump.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Warden/WardenBase.cpp b/src/server/game/Warden/WardenBase.cpp index c4d7b64..d517046 100644 --- a/src/server/game/Warden/WardenBase.cpp +++ b/src/server/game/Warden/WardenBase.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Warden/WardenBase.h b/src/server/game/Warden/WardenBase.h index c83bd2a..7e846d9 100644 --- a/src/server/game/Warden/WardenBase.h +++ b/src/server/game/Warden/WardenBase.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Warden/WardenDataStorage.cpp b/src/server/game/Warden/WardenDataStorage.cpp index 1fb2824..6de0cb3 100644 --- a/src/server/game/Warden/WardenDataStorage.cpp +++ b/src/server/game/Warden/WardenDataStorage.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Warden/WardenDataStorage.h b/src/server/game/Warden/WardenDataStorage.h index 24bcd87..ab62c31 100644 --- a/src/server/game/Warden/WardenDataStorage.h +++ b/src/server/game/Warden/WardenDataStorage.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Warden/WardenMac.cpp b/src/server/game/Warden/WardenMac.cpp index 47159f0..add090d 100644 --- a/src/server/game/Warden/WardenMac.cpp +++ b/src/server/game/Warden/WardenMac.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -226,9 +226,9 @@ void WardenMac::HandleData(ByteBuffer &buff) if(found && needBan && sWorld->getIntConfig(CONFIG_INT_WARDEN_BANDAY) > 0) { - std::string sDuratuin = (std::string(sConfig->GetStringDefault("Warden.BanDay", "")) + "d"); - std::string sText = ("Player: " + std::string(Client->GetPlayerName()) + " have used Cheating software and have banned for " + sDuratuin.c_str()); - sWorld->SendGMText(LANG_GM_BROADCAST, sText.c_str()); + std::string sDuratuin = (std::string(sConfig->GetStringDefault("Warden.BanDay", "")) + "Jour"); + std::string sText = ("Le Joueur: " + std::string(Client->GetPlayerName()) + " a utilisé un logiciel de triche et est banni pour " + sDuratuin.c_str()); + sWorld->SendGMText(LANG_SYSTEMMESSAGE, sText.c_str()); sWorld->BanAccount(BAN_CHARACTER, Client->GetPlayerName(), sDuratuin.c_str(), "Cheating software user", "Server Guard"); } else if(found && sWorld->getBoolConfig(CONFIG_BOOL_WARDEN_KICK)) Client->KickPlayer(); diff --git a/src/server/game/Warden/WardenMac.h b/src/server/game/Warden/WardenMac.h index 6a4f686..5d74000 100644 --- a/src/server/game/Warden/WardenMac.h +++ b/src/server/game/Warden/WardenMac.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Warden/WardenModuleMac.h b/src/server/game/Warden/WardenModuleMac.h index d5229b6..fab795e 100644 --- a/src/server/game/Warden/WardenModuleMac.h +++ b/src/server/game/Warden/WardenModuleMac.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Warden/WardenModuleWin.h b/src/server/game/Warden/WardenModuleWin.h index 3885461..1b95d54 100644 --- a/src/server/game/Warden/WardenModuleWin.h +++ b/src/server/game/Warden/WardenModuleWin.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Warden/WardenWin.cpp b/src/server/game/Warden/WardenWin.cpp index d738c83..c5efa5f 100644 --- a/src/server/game/Warden/WardenWin.cpp +++ b/src/server/game/Warden/WardenWin.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -519,11 +519,11 @@ void WardenWin::HandleData(ByteBuffer &buff) if(found && banDays > 0 && sWorld->getIntConfig(CONFIG_INT_WARDEN_BANDAY) > 0) { std::stringstream ssDuration; - ssDuration << +banDays << "d"; + ssDuration << +banDays << "Jour"; std::string sDuration; sDuration = ssDuration.str(); - std::string sText = ("Player: " + std::string(Client->GetPlayerName()) + " have used Cheating software and have banned for " + sDuration.c_str()); - sWorld->SendGMText(LANG_GM_BROADCAST, sText.c_str()); + std::string sText = ("Le Joueur: " + std::string(Client->GetPlayerName()) + " a utilisé un logiciel de triche et est banni pour " + sDuration.c_str()); + sWorld->SendGMText(LANG_SYSTEMMESSAGE, sText.c_str()); sLog->outWarden("Player %s (account: %u) have used Cheating software and have banned for %s", Client->GetPlayerName(), Client->GetAccountId(), sDuration.c_str()); sWorld->BanAccount(BAN_CHARACTER, Client->GetPlayerName(), sDuration.c_str(), "Cheating software user", "Server guard"); } else if(found && sWorld->getBoolConfig(CONFIG_BOOL_WARDEN_KICK)) diff --git a/src/server/game/Warden/WardenWin.h b/src/server/game/Warden/WardenWin.h index 4d1ed78..a2f37e1 100644 --- a/src/server/game/Warden/WardenWin.h +++ b/src/server/game/Warden/WardenWin.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/game/Weather/WeatherMgr.cpp b/src/server/game/Weather/WeatherMgr.cpp index 7f35152..ae6bc77 100644 --- a/src/server/game/Weather/WeatherMgr.cpp +++ b/src/server/game/Weather/WeatherMgr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 5130877..0836de0 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -66,10 +66,19 @@ #include "OutdoorPvPWG.h" #include "CalendarMgr.h" #include "WardenDataStorage.h" +/********* Add Custom ADDR ***************/ +#include "UnicodeConvert.h" + + volatile bool World::m_stopEvent = false; uint8 World::m_ExitCode = SHUTDOWN_EXIT_CODE; volatile uint32 World::m_worldLoopCounter = 0; +/********* Add Custom ADDR ***************/ +extern char FactionHordeToAllianceChar[255]; +extern char FactionAllianceToHordeChar[255]; +extern char CustomizeChar[255]; +extern char RaceChar[255] ; float World::m_MaxVisibleDistanceOnContinents = DEFAULT_VISIBILITY_DISTANCE; float World::m_MaxVisibleDistanceInInstances = DEFAULT_VISIBILITY_INSTANCE; @@ -415,9 +424,13 @@ void World::LoadConfigSettings(bool reload) rate_values[RATE_DROP_ITEM_REFERENCED] = sConfig->GetFloatDefault("Rate.Drop.Item.Referenced", 1.0f); rate_values[RATE_DROP_ITEM_REFERENCED_AMOUNT] = sConfig->GetFloatDefault("Rate.Drop.Item.ReferencedAmount", 1.0f); rate_values[RATE_DROP_MONEY] = sConfig->GetFloatDefault("Rate.Drop.Money", 1.0f); + rate_values[RATE_DROP_MONEY_PREMIUM] = sConfig->GetFloatDefault("Rate.Drop.Money.Premium", 3.0f); rate_values[RATE_XP_KILL] = sConfig->GetFloatDefault("Rate.XP.Kill", 1.0f); + rate_values[RATE_XP_KILL_PREMIUM] = sConfig->GetFloatDefault("Rate.XP.Kill.Premium", 3.0f); rate_values[RATE_XP_QUEST] = sConfig->GetFloatDefault("Rate.XP.Quest", 1.0f); + rate_values[RATE_XP_QUEST_PREMIUM] = sConfig->GetFloatDefault("Rate.XP.Quest.Premium", 3.0f); rate_values[RATE_XP_EXPLORE] = sConfig->GetFloatDefault("Rate.XP.Explore", 1.0f); + rate_values[RATE_XP_EXPLORE_PREMIUM] = sConfig->GetFloatDefault("Rate.XP.Explore.Premium", 3.0f); rate_values[RATE_REPAIRCOST] = sConfig->GetFloatDefault("Rate.RepairCost", 1.0f); if(rate_values[RATE_REPAIRCOST] < 0.0f) { @@ -852,13 +865,17 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_SKILL_PROSPECTING] = sConfig->GetBoolDefault("SkillChance.Prospecting", false); m_bool_configs[CONFIG_SKILL_MILLING] = sConfig->GetBoolDefault("SkillChance.Milling", false); - m_int_configs[CONFIG_SKILL_GAIN_CRAFTING] = sConfig->GetIntDefault("SkillGain.Crafting", 1); - - m_int_configs[CONFIG_SKILL_GAIN_DEFENSE] = sConfig->GetIntDefault("SkillGain.Defense", 1); - - m_int_configs[CONFIG_SKILL_GAIN_GATHERING] = sConfig->GetIntDefault("SkillGain.Gathering", 1); - - m_int_configs[CONFIG_SKILL_GAIN_WEAPON] = sConfig->GetIntDefault("SkillGain.Weapon", 1); + m_int_configs[CONFIG_SKILL_GAIN_CRAFTING] = sConfig->GetIntDefault("SkillGain.Crafting", 3); + m_int_configs[CONFIG_SKILL_GAIN_CRAFTING_PREMIUM] = sConfig->GetIntDefault("SkillGain.Crafting.Premium", 3); + + m_int_configs[CONFIG_SKILL_GAIN_DEFENSE] = sConfig->GetIntDefault("SkillGain.Defense", 3); + m_int_configs[CONFIG_SKILL_GAIN_DEFENSE_PREMIUM] = sConfig->GetIntDefault("SkillGain.Defense.Premium", 3); + + m_int_configs[CONFIG_SKILL_GAIN_GATHERING] = sConfig->GetIntDefault("SkillGain.Gathering", 3); + m_int_configs[CONFIG_SKILL_GAIN_GATHERING_PREMIUM] = sConfig->GetIntDefault("SkillGain.Gathering.Premium", 3); + + m_int_configs[CONFIG_SKILL_GAIN_WEAPON] = sConfig->GetIntDefault("SkillGain.Weapon", 3); + m_int_configs[CONFIG_SKILL_GAIN_WEAPON_PREMIUM] = sConfig->GetIntDefault("SkillGain.Weapon.Premium", 3); m_int_configs[CONFIG_MAX_OVERSPEED_PINGS] = sConfig->GetIntDefault("MaxOverspeedPings", 2); if(m_int_configs[CONFIG_MAX_OVERSPEED_PINGS] != 0 && m_int_configs[CONFIG_MAX_OVERSPEED_PINGS] < 2) @@ -1120,8 +1137,58 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_MOVEMENT_CHECKS_WATERWALK] = sConfig->GetBoolDefault("MovementChecker.waterwalk", true); m_bool_configs[CONFIG_MOVEMENT_CHECKS_MULTIJUMP] = sConfig->GetBoolDefault("MovementChecker.multijump", true); + /********* Add Custom Pandaria Transmogrification ***************/ + m_int_configs[CONFIG_REQUIREGOLD] = (uint32)sConfig->GetIntDefault("Transmogrification.RequireGold", 1); + m_float_configs[CONFIG_GOLDMODIFIER] = sConfig->GetFloatDefault("Transmogrification.GoldModifier", 1.0f); + m_int_configs[CONFIG_GOLDCOST] = (uint32)sConfig->GetIntDefault("Transmogrification.GoldCost", 100000); + m_bool_configs[CONFIG_REQUIRETOKEN] = sConfig->GetBoolDefault("Transmogrification.RequireToken", false); + m_int_configs[CONFIG_TOKENENTRY] = (uint32)sConfig->GetIntDefault("Transmogrification.TokenEntry", 49426); + m_int_configs[CONFIG_TOKENAMOUNT] = (uint32)sConfig->GetIntDefault("Transmogrification.TokenAmount", 1); + m_bool_configs[CONFIG_ALLOWPOOR] = sConfig->GetBoolDefault("Transmogrification.AllowPoor", false); + m_bool_configs[CONFIG_ALLOWCOMMON] = sConfig->GetBoolDefault("Transmogrification.AllowCommon", false); + m_bool_configs[CONFIG_ALLOWUNCOMMON] = sConfig->GetBoolDefault("Transmogrification.AllowUncommon", true); + m_bool_configs[CONFIG_ALLOWRARE] = sConfig->GetBoolDefault("Transmogrification.AllowRare", true); + m_bool_configs[CONFIG_ALLOWEPIC] = sConfig->GetBoolDefault("Transmogrification.AllowEpic", true); + m_bool_configs[CONFIG_ALLOWLEGENDARY] = sConfig->GetBoolDefault("Transmogrification.AllowLegendary", false); + m_bool_configs[CONFIG_ALLOWARTIFACT] = sConfig->GetBoolDefault("Transmogrification.AllowArtifact", false); + m_bool_configs[CONFIG_ALLOWHEIRLOOM] = sConfig->GetBoolDefault("Transmogrification.AllowHeirloom", true); + + /********* Add Custom Pandaria ***************/ + m_int_configs[CONFIG_CHANGE_FACTION_ITEM] = sConfig->GetIntDefault("Change.Faction.Item.Requis", 44990); + m_int_configs[CONFIG_CHANGE_FACTION_ITEM_COUNT_HORDE_TO_ALLIANCE] = sConfig->GetIntDefault("Change.Faction.Horde.To.Alliance.Item.Requis.Count", 1); + m_int_configs[CONFIG_CHANGE_FACTION_ITEM_COUNT_ALLIANCE_TO_HORDE] = sConfig->GetIntDefault("Change.Faction.Alliance.To.Horde.Item.Requis.Count", 1); + m_int_configs[CONFIG_CHANGE_RACE_ITEM] = sConfig->GetIntDefault("Change.Race.Item.Requis", 44990); + m_int_configs[CONFIG_CHANGE_RACE_ITEM_COUNT] = sConfig->GetIntDefault("Change.Race.Item.Requis.Count", 1); + m_int_configs[CONFIG_CHANGE_CUSTOMIZE_ITEM] = sConfig->GetIntDefault("Change.Customize.Item.Requis", 44990); + m_int_configs[CONFIG_CHANGE_CUSTOMIZE_ITEM_COUNT] = sConfig->GetIntDefault("Change.Customize.Item.Requis.Count", 1); + + + std::string tmp_string = sConfig->GetStringDefault("Change.Faction.Horde.To.Alliance.Menu","Changer de faction."); + ConvertASCIIToUTF8(tmp_string.c_str(), tmp_string.length() +1,FactionHordeToAllianceChar); + + tmp_string = sConfig->GetStringDefault("Change.Faction.Alliance.To.Horde.Menu","Changer de faction."); + ConvertASCIIToUTF8(tmp_string.c_str(), tmp_string.length() +1,FactionAllianceToHordeChar); + + tmp_string = sConfig->GetStringDefault("Change.Race.Menu","Changer de Race."); + ConvertASCIIToUTF8(tmp_string.c_str(), tmp_string.length() +1, RaceChar); + + tmp_string = sConfig->GetStringDefault("Change.Customize.Menu","Customizer votre perso."); + ConvertASCIIToUTF8(tmp_string.c_str(), tmp_string.length() +1, CustomizeChar); + + /********* Add Custom Pandaria PvP Rank ***************/ + std::string s_pvp_ranks = "10,50,100,200,450,750,1300,2000,3500,6000,9500,15000,21000,30000"; + char *c_pvp_ranks = const_cast(s_pvp_ranks.c_str()); + for (int i = 0; i !=HKRANKMAX; i++) + { + if (i==0) + pvp_ranks[0] = 0; + else if (i==1) + pvp_ranks[1] = atoi(strtok (c_pvp_ranks, ",")); + else + pvp_ranks[i] = atoi(strtok (NULL, ",")); + } sScriptMgr->OnConfigLoad(reload); -} + } extern void LoadGameObjectModelList(); @@ -1565,10 +1632,31 @@ void World::SetInitialWorldSettings() sLog->outString("Loading SmartAI scripts..."); sSmartScriptMgr->LoadSmartAIFromDB(); - + sLog->outString("Loading Calendar data..."); sCalendarMgr->LoadFromDB(); +/********* Add Custom ADDR ***************/ + m_int_configs[CONFIG_CHANGE_FACTION_ITEM] = sConfig->GetIntDefault("Change.Faction.Item.Requis", 44990); + m_int_configs[CONFIG_CHANGE_FACTION_ITEM_COUNT_HORDE_TO_ALLIANCE] = sConfig->GetIntDefault("Change.Faction.Horde.To.Alliance.Item.Requis.Count", 1); + m_int_configs[CONFIG_CHANGE_FACTION_ITEM_COUNT_ALLIANCE_TO_HORDE] = sConfig->GetIntDefault("Change.Faction.Alliance.To.Horde.Item.Requis.Count", 1); + m_int_configs[CONFIG_CHANGE_RACE_ITEM] = sConfig->GetIntDefault("Change.Race.Item.Requis", 44990); + m_int_configs[CONFIG_CHANGE_RACE_ITEM_COUNT] = sConfig->GetIntDefault("Change.Race.Item.Requis.Count", 1); + m_int_configs[CONFIG_CHANGE_CUSTOMIZE_ITEM] = sConfig->GetIntDefault("Change.Customize.Item.Requis", 44990); + m_int_configs[CONFIG_CHANGE_CUSTOMIZE_ITEM_COUNT] = sConfig->GetIntDefault("Change.Customize.Item.Requis.Count", 1); + + std::string tmp_string = sConfig->GetStringDefault("Change.Faction.Horde.To.Alliance.Menu","Changer de faction."); + ConvertASCIIToUTF8(tmp_string.c_str(), tmp_string.length() +1,FactionHordeToAllianceChar); + + tmp_string = sConfig->GetStringDefault("Change.Faction.Alliance.To.Horde.Menu","Changer de faction."); + ConvertASCIIToUTF8(tmp_string.c_str(), tmp_string.length() +1,FactionAllianceToHordeChar); + + tmp_string = sConfig->GetStringDefault("Change.Race.Menu","Changer de Race."); + ConvertASCIIToUTF8(tmp_string.c_str(), tmp_string.length() +1, RaceChar); + + tmp_string = sConfig->GetStringDefault("Change.Customize.Menu","Customizer votre perso."); + ConvertASCIIToUTF8(tmp_string.c_str(), tmp_string.length() +1, CustomizeChar); + ///- Initialize game time and timers sLog->outString("Initialize game time and timers"); m_gameTime = time(NULL); @@ -1861,7 +1949,8 @@ void World::Update(uint32 diff) m_timers[WUPDATE_UPTIME].Reset(); LoginDatabase.PExecute("UPDATE uptime SET uptime = %u, maxplayers = %u WHERE realmid = %u AND starttime = " UI64FMTD, tmpDiff, maxOnlinePlayers, realmID, uint64(m_startTime)); - } + WorldSession::SendExternalMails(); + } /// Clean logs table if(sWorld->getIntConfig(CONFIG_LOGDB_CLEARTIME) > 0) // if not enabled, ignore the timer @@ -2891,4 +2980,4 @@ uint32 World::GetRealmPort() { QueryResult result = LoginDatabase.PQuery("SELECT `port` FROM `realmlist` WHERE `id` = '%u'", realmID); return result ? (*result)[0].GetUInt32() : 0; -} \ No newline at end of file +} diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 8c4a5ec..dd0608b 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -153,6 +153,15 @@ enum WorldBoolConfigs CONFIG_MOVEMENT_CHECKS_PLANE, CONFIG_MOVEMENT_CHECKS_WATERWALK, CONFIG_MOVEMENT_CHECKS_MULTIJUMP, + CONFIG_ALLOWPOOR, + CONFIG_REQUIRETOKEN, + CONFIG_ALLOWCOMMON, + CONFIG_ALLOWUNCOMMON, + CONFIG_ALLOWRARE, + CONFIG_ALLOWEPIC, + CONFIG_ALLOWLEGENDARY, + CONFIG_ALLOWARTIFACT, + CONFIG_ALLOWHEIRLOOM, BOOL_CONFIG_VALUE_COUNT }; @@ -169,6 +178,7 @@ enum WorldFloatConfigs CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS, CONFIG_THREAT_RADIUS, CONFIG_CHANCE_OF_GM_SURVEY, + CONFIG_GOLDMODIFIER, FLOAT_CONFIG_VALUE_COUNT }; @@ -230,9 +240,13 @@ enum WorldIntConfigs CONFIG_SKILL_CHANCE_MINING_STEPS, CONFIG_SKILL_CHANCE_SKINNING_STEPS, CONFIG_SKILL_GAIN_CRAFTING, + CONFIG_SKILL_GAIN_CRAFTING_PREMIUM, CONFIG_SKILL_GAIN_DEFENSE, + CONFIG_SKILL_GAIN_DEFENSE_PREMIUM, CONFIG_SKILL_GAIN_GATHERING, + CONFIG_SKILL_GAIN_GATHERING_PREMIUM, CONFIG_SKILL_GAIN_WEAPON, + CONFIG_SKILL_GAIN_WEAPON_PREMIUM, CONFIG_MAX_OVERSPEED_PINGS, CONFIG_EXPANSION, CONFIG_CHATFLOOD_MESSAGE_COUNT, @@ -309,6 +323,20 @@ enum WorldIntConfigs CONFIG_OUTDOORPVP_WINTERGRASP_SAVESTATE_PERIOD, CONFIG_MAX_INSTANCES_PER_HOUR, CONFIG_MOVEMENT_CHECKS_ACCESSLEVEL, + + /********* Add Custom Pandaria ***************/ + CONFIG_CHANGE_FACTION_ITEM, + CONFIG_CHANGE_FACTION_ITEM_COUNT_HORDE_TO_ALLIANCE, + CONFIG_CHANGE_FACTION_ITEM_COUNT_ALLIANCE_TO_HORDE, + CONFIG_CHANGE_RACE_ITEM, + CONFIG_CHANGE_RACE_ITEM_COUNT, + CONFIG_CHANGE_CUSTOMIZE_ITEM, + CONFIG_CHANGE_CUSTOMIZE_ITEM_COUNT, + CONFIG_REQUIREGOLD, + CONFIG_GOLDCOST, + CONFIG_TOKENENTRY, + CONFIG_TOKENAMOUNT, + INT_CONFIG_VALUE_COUNT }; @@ -326,9 +354,13 @@ enum Rates RATE_DROP_ITEM_REFERENCED, RATE_DROP_ITEM_REFERENCED_AMOUNT, RATE_DROP_MONEY, + RATE_DROP_MONEY_PREMIUM, RATE_XP_KILL, + RATE_XP_KILL_PREMIUM, RATE_XP_QUEST, + RATE_XP_QUEST_PREMIUM, RATE_XP_EXPLORE, + RATE_XP_EXPLORE_PREMIUM, RATE_REPAIRCOST, RATE_REPUTATION_GAIN, RATE_REPUTATION_LOWLEVEL_KILL, @@ -371,6 +403,26 @@ enum Rates RATE_MOVESPEED, MAX_RATES }; +/********* Add Custom Pandaria PvP Rank ***************/ +enum HonorKillPvPRank +{ + HKRANK00, + HKRANK01, + HKRANK02, + HKRANK03, + HKRANK04, + HKRANK05, + HKRANK06, + HKRANK07, + HKRANK08, + HKRANK09, + HKRANK10, + HKRANK11, + HKRANK12, + HKRANK13, + HKRANK14, + HKRANKMAX +}; /// Can be used in SMSG_AUTH_RESPONSE packet enum BillingPlanFlags @@ -621,6 +673,9 @@ class World void SendZoneMessage(uint32 zone, WorldPacket* packet, WorldSession* self = 0, uint32 team = 0); void SendZoneText(uint32 zone, const char *text, WorldSession* self = 0, uint32 team = 0); void SendServerMessage(ServerMessageType type, const char *text = "", Player* player = NULL); + + /********* Add Custom Pandaria PvP Rank ***************/ + uint32 pvp_ranks[HKRANKMAX]; /// Are we in the middle of a shutdown? bool IsShutdowning() const { return m_ShutdownTimer > 0; } @@ -838,4 +893,4 @@ class World extern uint32 realmID; #define sWorld ACE_Singleton::instance() -#endif \ No newline at end of file +#endif diff --git a/src/server/pathfinding/CMakeLists.txt b/src/server/pathfinding/CMakeLists.txt index aa881ff..31c3e66 100644 --- a/src/server/pathfinding/CMakeLists.txt +++ b/src/server/pathfinding/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Copyright (C) 2012 SymphonyArt # diff --git a/src/server/pathfinding/PrecompiledHeaders/pathfindingPCH.cpp b/src/server/pathfinding/PrecompiledHeaders/pathfindingPCH.cpp index 7d5f9cc..d74873a 100644 --- a/src/server/pathfinding/PrecompiledHeaders/pathfindingPCH.cpp +++ b/src/server/pathfinding/PrecompiledHeaders/pathfindingPCH.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/PrecompiledHeaders/pathfindingPCH.h b/src/server/pathfinding/PrecompiledHeaders/pathfindingPCH.h index 5a579f5..6fe5edf 100644 --- a/src/server/pathfinding/PrecompiledHeaders/pathfindingPCH.h +++ b/src/server/pathfinding/PrecompiledHeaders/pathfindingPCH.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourAlloc.cpp b/src/server/pathfinding/detour/DetourAlloc.cpp index d4caf43..37098bd 100644 --- a/src/server/pathfinding/detour/DetourAlloc.cpp +++ b/src/server/pathfinding/detour/DetourAlloc.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourAlloc.h b/src/server/pathfinding/detour/DetourAlloc.h index 3706803..1e9a5ab 100644 --- a/src/server/pathfinding/detour/DetourAlloc.h +++ b/src/server/pathfinding/detour/DetourAlloc.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourAssert.h b/src/server/pathfinding/detour/DetourAssert.h index 8d6181d..93ee2ba 100644 --- a/src/server/pathfinding/detour/DetourAssert.h +++ b/src/server/pathfinding/detour/DetourAssert.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourCommon.cpp b/src/server/pathfinding/detour/DetourCommon.cpp index 92aa79d..a751dfe 100644 --- a/src/server/pathfinding/detour/DetourCommon.cpp +++ b/src/server/pathfinding/detour/DetourCommon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourCommon.h b/src/server/pathfinding/detour/DetourCommon.h index dbded0b..ed3ef10 100644 --- a/src/server/pathfinding/detour/DetourCommon.h +++ b/src/server/pathfinding/detour/DetourCommon.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourNavMesh.cpp b/src/server/pathfinding/detour/DetourNavMesh.cpp index 3747f7a..2a9626a 100644 --- a/src/server/pathfinding/detour/DetourNavMesh.cpp +++ b/src/server/pathfinding/detour/DetourNavMesh.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourNavMesh.h b/src/server/pathfinding/detour/DetourNavMesh.h index ce0631b..f1314d5 100644 --- a/src/server/pathfinding/detour/DetourNavMesh.h +++ b/src/server/pathfinding/detour/DetourNavMesh.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourNavMeshBuilder.cpp b/src/server/pathfinding/detour/DetourNavMeshBuilder.cpp index d3e9b01..0850d00 100644 --- a/src/server/pathfinding/detour/DetourNavMeshBuilder.cpp +++ b/src/server/pathfinding/detour/DetourNavMeshBuilder.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourNavMeshBuilder.h b/src/server/pathfinding/detour/DetourNavMeshBuilder.h index ca19cf9..7f34ced 100644 --- a/src/server/pathfinding/detour/DetourNavMeshBuilder.h +++ b/src/server/pathfinding/detour/DetourNavMeshBuilder.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourNavMeshQuery.cpp b/src/server/pathfinding/detour/DetourNavMeshQuery.cpp index db18b6e..437b94f 100644 --- a/src/server/pathfinding/detour/DetourNavMeshQuery.cpp +++ b/src/server/pathfinding/detour/DetourNavMeshQuery.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourNavMeshQuery.h b/src/server/pathfinding/detour/DetourNavMeshQuery.h index 42b0cc5..e5524c5 100644 --- a/src/server/pathfinding/detour/DetourNavMeshQuery.h +++ b/src/server/pathfinding/detour/DetourNavMeshQuery.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourNode.cpp b/src/server/pathfinding/detour/DetourNode.cpp index 6f80242..2bc4e2a 100644 --- a/src/server/pathfinding/detour/DetourNode.cpp +++ b/src/server/pathfinding/detour/DetourNode.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourNode.h b/src/server/pathfinding/detour/DetourNode.h index f1ebdc8..1a41007 100644 --- a/src/server/pathfinding/detour/DetourNode.h +++ b/src/server/pathfinding/detour/DetourNode.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourObstacleAvoidance.cpp b/src/server/pathfinding/detour/DetourObstacleAvoidance.cpp index 3e02a4a..9ca0d02 100644 --- a/src/server/pathfinding/detour/DetourObstacleAvoidance.cpp +++ b/src/server/pathfinding/detour/DetourObstacleAvoidance.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/detour/DetourObstacleAvoidance.h b/src/server/pathfinding/detour/DetourObstacleAvoidance.h index f590372..0bfb7b0 100644 --- a/src/server/pathfinding/detour/DetourObstacleAvoidance.h +++ b/src/server/pathfinding/detour/DetourObstacleAvoidance.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/Recast.cpp b/src/server/pathfinding/recast/Recast.cpp index 5145d79..c89ff5d 100644 --- a/src/server/pathfinding/recast/Recast.cpp +++ b/src/server/pathfinding/recast/Recast.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/Recast.h b/src/server/pathfinding/recast/Recast.h index 2c772a3..e81f74b 100644 --- a/src/server/pathfinding/recast/Recast.h +++ b/src/server/pathfinding/recast/Recast.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastAlloc.cpp b/src/server/pathfinding/recast/RecastAlloc.cpp index 439ea52..5f32eae 100644 --- a/src/server/pathfinding/recast/RecastAlloc.cpp +++ b/src/server/pathfinding/recast/RecastAlloc.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastAlloc.h b/src/server/pathfinding/recast/RecastAlloc.h index f24333f..3fab5c0 100644 --- a/src/server/pathfinding/recast/RecastAlloc.h +++ b/src/server/pathfinding/recast/RecastAlloc.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastArea.cpp b/src/server/pathfinding/recast/RecastArea.cpp index f952b39..07a4d1a 100644 --- a/src/server/pathfinding/recast/RecastArea.cpp +++ b/src/server/pathfinding/recast/RecastArea.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastAssert.h b/src/server/pathfinding/recast/RecastAssert.h index bba9d09..cff7741 100644 --- a/src/server/pathfinding/recast/RecastAssert.h +++ b/src/server/pathfinding/recast/RecastAssert.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastContour.cpp b/src/server/pathfinding/recast/RecastContour.cpp index 3268f25..9bac66d 100644 --- a/src/server/pathfinding/recast/RecastContour.cpp +++ b/src/server/pathfinding/recast/RecastContour.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastFilter.cpp b/src/server/pathfinding/recast/RecastFilter.cpp index d8bf642..d36d6af 100644 --- a/src/server/pathfinding/recast/RecastFilter.cpp +++ b/src/server/pathfinding/recast/RecastFilter.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastMesh.cpp b/src/server/pathfinding/recast/RecastMesh.cpp index 90d436c..a18aefc 100644 --- a/src/server/pathfinding/recast/RecastMesh.cpp +++ b/src/server/pathfinding/recast/RecastMesh.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastMeshDetail.cpp b/src/server/pathfinding/recast/RecastMeshDetail.cpp index f5a73a3..ad122e9 100644 --- a/src/server/pathfinding/recast/RecastMeshDetail.cpp +++ b/src/server/pathfinding/recast/RecastMeshDetail.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastRasterization.cpp b/src/server/pathfinding/recast/RecastRasterization.cpp index e1c9833..84f1faf 100644 --- a/src/server/pathfinding/recast/RecastRasterization.cpp +++ b/src/server/pathfinding/recast/RecastRasterization.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/pathfinding/recast/RecastRegion.cpp b/src/server/pathfinding/recast/RecastRegion.cpp index a9af50f..761f917 100644 --- a/src/server/pathfinding/recast/RecastRegion.cpp +++ b/src/server/pathfinding/recast/RecastRegion.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt index 74005bc..2041c79 100644 --- a/src/server/scripts/CMakeLists.txt +++ b/src/server/scripts/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -42,6 +42,11 @@ set(scripts_STAT_SRCS ${scripts_spells} ${scripts_outdoorpvp} ${scripts_commands} + Custom/npc_teleport.cpp + Custom/Transmogrification.h + Custom/Transmogrification.cpp + ../game/AI/ScriptedAI/sc_npc_teleport.cpp + ../game/AI/ScriptedAI/sc_npc_teleport.h ../game/AI/ScriptedAI/ScriptedEscortAI.cpp ../game/AI/ScriptedAI/ScriptedCreature.cpp ../game/AI/ScriptedAI/ScriptedFollowerAI.cpp @@ -154,4 +159,4 @@ if(CMAKE_COMPILER_IS_GNUCXX) add_precompiled_header(scripts ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/ScriptPCH.h) elseif(MSVC) add_native_precompiled_header(scripts ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/ScriptPCH) -endif() \ No newline at end of file +endif() diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp index 9a7266a..c39526c 100644 --- a/src/server/scripts/Commands/cs_account.cpp +++ b/src/server/scripts/Commands/cs_account.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_achievement.cpp b/src/server/scripts/Commands/cs_achievement.cpp index be7e718..45362e2 100644 --- a/src/server/scripts/Commands/cs_achievement.cpp +++ b/src/server/scripts/Commands/cs_achievement.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 2217a35..ae6718e 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_event.cpp b/src/server/scripts/Commands/cs_event.cpp index 47505ce..3c437e5 100644 --- a/src/server/scripts/Commands/cs_event.cpp +++ b/src/server/scripts/Commands/cs_event.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp index 6662a51..bd84543 100644 --- a/src/server/scripts/Commands/cs_gm.cpp +++ b/src/server/scripts/Commands/cs_gm.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 1aa981d..2935d27 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index d14923e..78c7952 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_gps.cpp b/src/server/scripts/Commands/cs_gps.cpp index e4c13bb..720b048 100644 --- a/src/server/scripts/Commands/cs_gps.cpp +++ b/src/server/scripts/Commands/cs_gps.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_honor.cpp b/src/server/scripts/Commands/cs_honor.cpp index b5cb221..f49e22a 100644 --- a/src/server/scripts/Commands/cs_honor.cpp +++ b/src/server/scripts/Commands/cs_honor.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_learn.cpp b/src/server/scripts/Commands/cs_learn.cpp index d383ae3..3403699 100644 --- a/src/server/scripts/Commands/cs_learn.cpp +++ b/src/server/scripts/Commands/cs_learn.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index 9d7beac..618834a 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index ce15563..2073e54 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -107,12 +107,15 @@ class npc_commandscript : public CommandScript Map *map = chr->GetMap(); if(chr->GetTransport()) - { - uint32 tguid = chr->GetTransport()->AddNPCPassenger(0, id, chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO()); - if(tguid > 0) - WorldDatabase.PQuery("INSERT INTO creature_transport (guid, npc_entry, transport_entry, TransOffsetX, TransOffsetY, TransOffsetZ, TransOffsetO) values (%u, %u, %f, %f, %f, %f, %u)", tguid, id, chr->GetTransport()->GetEntry(), chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO()); - - return true; + { + if(!map->ToInstanceMap()) + { + if(chr->GetTransport()->AddNPCPassenger(0, id, chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO())) + { + WorldDatabase.PQuery("INSERT INTO creature_transport (guid, transport_entry, npc_entry, TransOffsetX, TransOffsetY, TransOffsetZ, TransOffsetO, emote) values (%u, %u, %u, %f, %f, %f, %f, 0)", 0, chr->GetTransport()->GetEntry(),id, chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO()); + return true; + } + } else chr->GetTransport()->AddNPCPassengerInInstance(0, id, chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO()); } Creature* creature = new Creature; diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp index 165d8c6..bed376c 100644 --- a/src/server/scripts/Commands/cs_quest.cpp +++ b/src/server/scripts/Commands/cs_quest.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 4b6277e..7a25cab 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_tele.cpp b/src/server/scripts/Commands/cs_tele.cpp index 1ef4212..08045fc 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_titles.cpp b/src/server/scripts/Commands/cs_titles.cpp index 8176e0c..61789fe 100644 --- a/src/server/scripts/Commands/cs_titles.cpp +++ b/src/server/scripts/Commands/cs_titles.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Commands/cs_vip.cpp b/src/server/scripts/Commands/cs_vip.cpp new file mode 100644 index 0000000..e2195b8 --- /dev/null +++ b/src/server/scripts/Commands/cs_vip.cpp @@ -0,0 +1,392 @@ +/* + * Copyright (C) 2008-2010 TrinityCore + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +/* ScriptData +Name: vip_commandscript +%Complete: ? +Comment: All vip related commands +Category: commandscripts +EndScriptData */ + +#include "ScriptPCH.h" + +class vip_commandscript : public CommandScript +{ + public: + vip_commandscript() : CommandScript("vip_commandscript") { } + + ChatCommand* GetCommands() const + { + static ChatCommand vipteleCommandTable[] = + { + { "dalaran", SEC_VIP, false, &HandleVipTeleDalaranCommand, "", NULL }, + { "zoneshop", SEC_VIP, false, &HandleVipTelezoneshopCommand, "", NULL }, + { "shattrath", SEC_VIP, false, &HandleVipTeleShattrathCommand, "", NULL }, + { "guruarena", SEC_VIP, false, &HandleVipTeleGuruarenaCommand, "", NULL }, + { "stormwind", SEC_VIP, false, &HandleVipTeleStormwindCommand, "", NULL }, + { "ironforge", SEC_VIP, false, &HandleVipTeleIronforgeCommand, "", NULL }, + { "darnassus", SEC_VIP, false, &HandleVipTeleDarnassusCommand, "", NULL }, + { "exodar", SEC_VIP, false, &HandleVipTeleExodarCommand, "", NULL }, + { "orgrimmar", SEC_VIP, false, &HandleVipTeleOrgrimmarCommand, "", NULL }, + { "thunderbluff", SEC_VIP, false, &HandleVipTeleThunderbluffCommand, "", NULL }, + { "undercity", SEC_VIP, false, &HandleVipTeleUndercityCommand, "", NULL }, + { "silvermoon", SEC_VIP, false, &HandleVipTeleSilvermoonCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } + }; + static ChatCommand vipCommandTable[] = + { + { "bank", SEC_VIP, false, &HandleVipBankCommand, "", NULL }, + { "save", SEC_VIP, false, &HandleVipSaveCommand, "", NULL }, + { "tele", SEC_VIP, false, NULL, "", vipteleCommandTable }, + { NULL, 0, false, NULL, "", NULL } + }; + static ChatCommand commandTable[] = + { + { "vip", SEC_VIP, false, NULL, "", vipCommandTable }, + { NULL, 0, false, NULL, "", NULL } + }; + return commandTable; + } + + static bool HandleVipTeleDalaranCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + _player->TeleportTo(571, 5804.15f, 624.771f, 647.767f, 1.64f); + + return true; + } + + static bool HandleVipTelezoneshopCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + _player->TeleportTo(571, 5778.92f, 607.65f, 565.30f, 4.04f); + + return true; + } + + static bool HandleVipTeleShattrathCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + _player->TeleportTo(530, -1838.16f, 5301.79f, -12.428f, 5.9517f); + + return true; + } + + static bool HandleVipTeleGuruarenaCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + _player->TeleportTo(0, -13277.4f, 127.372f, 26.1418f, 1.11878f); + + return true; + } + + static bool HandleVipTeleStormwindCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + if(_player->GetTeamId() == TEAM_ALLIANCE) + _player->TeleportTo(0, -8833.38f, 628.628f, 94.0066f, 1.06535f); + else + return false; + + return true; + } + + static bool HandleVipTeleIronforgeCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + if(_player->GetTeamId() == TEAM_ALLIANCE) + _player->TeleportTo(0, -4918.88f, -940.406f, 501.564f, 5.42347f); + else + return false; + + return true; + } + + static bool HandleVipTeleDarnassusCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + if(_player->GetTeamId() == TEAM_ALLIANCE) + _player->TeleportTo(1, 9949.56f, 2284.21f, 1341.4f, 1.59587f); + else + return false; + + return true; + } + + static bool HandleVipTeleExodarCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + if(_player->GetTeamId() == TEAM_ALLIANCE) + _player->TeleportTo(530, -3965.7f, -11653.6f, -138.844f, 0.852154f); + else + return false; + + return true; + } + + static bool HandleVipTeleOrgrimmarCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + if(_player->GetTeamId() == TEAM_HORDE) + _player->TeleportTo(1, 1629.36f, -4373.39f, 31.2564f, 3.54839f); + else + return false; + + return true; + } + + static bool HandleVipTeleThunderbluffCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + if(_player->GetTeamId() == TEAM_HORDE) + _player->TeleportTo(1, -1277.37f, 124.804f, 131.287f, 5.22274f); + else + return false; + + return true; + } + + static bool HandleVipTeleUndercityCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + if(_player->GetTeamId() == TEAM_HORDE) + _player->TeleportTo(0, 1584.07f, 241.987f, -52.1534f, 0.049647f); + else + return false; + + return true; + } + + static bool HandleVipTeleSilvermoonCommand(ChatHandler* handler, const char * /*args*/) + { + Player* _player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->IsFlying() || _player->IsMounted() || _player->isUsingLfg() || _player->InArena() || _player->InBattleground() || _player->isInFlight()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, Mounted, Flying, Using Dungeon Finder, In BattleGround or Arena"); + return false; + } + + if (_player->isInCombat()) + { + handler->SendSysMessage(LANG_YOU_IN_COMBAT); + handler->SetSentErrorMessage(true); + return false; + } + + if(_player->GetTeamId() == TEAM_HORDE) + _player->TeleportTo(530, 9487.69f, -7279.2f, 14.2866f, 6.16478f); + else + return false; + + return true; + } + + static bool HandleVipSaveCommand(ChatHandler* handler, const char* /*args*/) + { + Player *player = handler->GetSession()->GetPlayer(); + + // save GM account without delay and output message + if (handler->GetSession()->GetSecurity() > SEC_PLAYER) + { + player->SaveToDB(); + handler->SendSysMessage(LANG_PLAYER_SAVED); + return true; + } + + // save if the player has last been saved over 20 seconds ago + uint32 save_interval = sWorld->getIntConfig(CONFIG_INTERVAL_SAVE); + if (save_interval == 0 || (save_interval > 20*IN_MILLISECONDS && player->GetSaveTimer() <= save_interval - 20*IN_MILLISECONDS)) + player->SaveToDB(); + + return true; + } + + static bool HandleVipBankCommand(ChatHandler* handler, const char* /*args*/) + { + Player *_player = handler->GetSession()->GetPlayer(); + + if (!_player || _player->isDead() || _player->InArena() || _player->InBattleground()) + { + handler->SendSysMessage("Error. Check if you are not: Dead, In BattleGround or Arena"); + return false; + } + + handler->GetSession()->SendShowBank(handler->GetSession()->GetPlayer()->GetGUID()); + + return true; + } +}; + +void AddSC_vip_commandscript() +{ + new vip_commandscript(); +} diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index 5d36434..d417d9e 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Custom/Transmogrification.cpp b/src/server/scripts/Custom/Transmogrification.cpp new file mode 100644 index 0000000..8f8c19a --- /dev/null +++ b/src/server/scripts/Custom/Transmogrification.cpp @@ -0,0 +1,447 @@ +/* +4.0 +Transmogrification 3.3.5a - Gossip Menu +By Rochet2 +*/ + +#include "ScriptPCH.h" +#include "Transmogrification.h" + + +typedef UNORDERED_MAP transmogData; +typedef UNORDERED_MAP transmogMap; +transmogMap entryMap; // entryMap[pGUID][iGUID] = entry +transmogData dataMap; // dataMap[iGUID] = pGUID + +uint32 Transmogrification::GetFakeEntry(Item* item) +{ + transmogData::iterator itr = dataMap.find(item->GetGUIDLow()); + if(itr == dataMap.end()) return 0; + transmogMap::iterator itr2 = entryMap.find(itr->second); + if(itr2 == entryMap.end()) return 0; + transmogData::iterator itr3 = itr2->second.find(item->GetGUIDLow()); + if(itr3 == itr2->second.end()) return 0; + return itr3->second; +} + +void Transmogrification::DeleteFakeFromDB(uint32 itemGUID) +{ + if(dataMap.find(itemGUID) != dataMap.end()) + { + if(entryMap.find(dataMap[itemGUID]) != entryMap.end()) + entryMap[dataMap[itemGUID]].erase(itemGUID); + dataMap.erase(itemGUID); + } + CharacterDatabase.PExecute("DELETE FROM custom_transmogrification WHERE GUID = %u", itemGUID); +} + +bool Transmogrification::DeleteFakeEntry(Item* item) +{ + if(!GetFakeEntry(item)) + return false; + item->GetOwner()->UpdateUInt32Value(PLAYER_VISIBLE_ITEM_1_ENTRYID + (item->GetSlot() * 2), item->GetEntry()); + DeleteFakeFromDB(item->GetGUIDLow()); + return true; +} + +void Transmogrification::SetFakeEntry(Item* item, uint32 entry) +{ + if(Player* player = item->GetOwner()) + { + uint32 pGUID = player->GetGUIDLow(); + uint32 iGUID = item->GetGUIDLow(); + player->UpdateUInt32Value(PLAYER_VISIBLE_ITEM_1_ENTRYID + (item->GetSlot() * 2), entry); + entryMap[pGUID][iGUID] = entry; + dataMap[iGUID] = pGUID; + CharacterDatabase.PExecute("REPLACE INTO custom_transmogrification (GUID, FakeEntry, Owner) VALUES (%u, %u, %u)", iGUID, entry, pGUID); + } +} + +uint32 Transmogrification::SuitableForTransmogrification(Player* player, Item* oldItem, Item* newItem) +{ + // not possibly the best structure here, but atleast I got my head around this + if(!sTransmogrification->AllowedQuality(newItem->GetTemplate()->Quality)) + return ERR_FAKE_NEW_BAD_QUALITY; + + if(!sTransmogrification->AllowedQuality(oldItem->GetTemplate()->Quality)) + return ERR_FAKE_OLD_BAD_QUALITY; + + if(oldItem->GetTemplate()->DisplayInfoID == newItem->GetTemplate()->DisplayInfoID) + return ERR_FAKE_SAME_DISPLAY; + + if(GetFakeEntry(oldItem)) + if(const ItemTemplate* fakeItemTemplate = sObjectMgr->GetItemTemplate(GetFakeEntry(oldItem))) + if(fakeItemTemplate->DisplayInfoID == newItem->GetTemplate()->DisplayInfoID) + return ERR_FAKE_SAME_DISPLAY_FAKE; + + if(player->CanUseItem(newItem, false) != EQUIP_ERR_OK) + return ERR_FAKE_CANT_USE; + + uint32 newClass = newItem->GetTemplate()->Class; + uint32 oldClass = oldItem->GetTemplate()->Class; + uint32 newSubClass = newItem->GetTemplate()->SubClass; + uint32 oldSubClass = oldItem->GetTemplate()->SubClass; + uint32 newInventorytype = newItem->GetTemplate()->InventoryType; + uint32 oldInventorytype = oldItem->GetTemplate()->InventoryType; + + if(newClass != oldClass) + return ERR_FAKE_NOT_SAME_CLASS; + + if(newClass == ITEM_CLASS_WEAPON && newSubClass != ITEM_SUBCLASS_WEAPON_FISHING_POLE && oldSubClass != ITEM_SUBCLASS_WEAPON_FISHING_POLE) + { + if(newSubClass == oldSubClass || ((newSubClass == ITEM_SUBCLASS_WEAPON_BOW || newSubClass == ITEM_SUBCLASS_WEAPON_GUN || newSubClass == ITEM_SUBCLASS_WEAPON_CROSSBOW) && (oldSubClass == ITEM_SUBCLASS_WEAPON_BOW || oldSubClass == ITEM_SUBCLASS_WEAPON_GUN || oldSubClass == ITEM_SUBCLASS_WEAPON_CROSSBOW))) + if(newInventorytype == oldInventorytype || (newInventorytype == INVTYPE_WEAPON && (oldInventorytype == INVTYPE_WEAPONMAINHAND || oldInventorytype == INVTYPE_WEAPONOFFHAND))) + return ERR_FAKE_OK; + else + return ERR_FAKE_BAD_INVENTORYTYPE; + else + return ERR_FAKE_BAD_SUBLCASS; + } + + else if(newClass == ITEM_CLASS_ARMOR) + if(newSubClass == oldSubClass) + if(newInventorytype == oldInventorytype || (newInventorytype == INVTYPE_CHEST && oldInventorytype == INVTYPE_ROBE) || (newInventorytype == INVTYPE_ROBE && oldInventorytype == INVTYPE_CHEST)) + return ERR_FAKE_OK; + else + return ERR_FAKE_BAD_INVENTORYTYPE; + else + return ERR_FAKE_BAD_SUBLCASS; + return ERR_FAKE_BAD_CLASS; +} + +class NPC_Transmogrify : public CreatureScript +{ +public: + + NPC_Transmogrify() : CreatureScript("NPC_Transmogrify") { } + + bool OnGossipHello(Player* player, Creature* creature) + { + WorldSession* session = player->GetSession(); + for(uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_TABARD; slot++) // EQUIPMENT_SLOT_END + { + if(Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) + { + if(sTransmogrification->AllowedQuality(newItem->GetTemplate()->Quality)) + { + if(const char* slotName = GetSlotName(slot, session)) + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, slotName, EQUIPMENT_SLOT_END, slot); + } + } + } + player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_INTERACT_1, session->GetTrinityString(LANG_OPTION_REMOVE_ALL), EQUIPMENT_SLOT_END+2, 0, session->GetTrinityString(LANG_POPUP_REMOVE_ALL), 0, false); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, session->GetTrinityString(LANG_OPTION_UPDATE_MENU), EQUIPMENT_SLOT_END+1, 0); + player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); + return true; + } + + bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 uiAction) + { + WorldSession* session = player->GetSession(); + player->PlayerTalkClass->ClearMenus(); + switch(sender) + { + case EQUIPMENT_SLOT_END: // Show items you can use + { + if(Item* oldItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, uiAction)) + { + uint32 lowGUID = player->GetGUIDLow(); + _items[lowGUID].clear(); + uint32 limit = 0; + uint32 price = 0; + switch(sTransmogrification->GetRequireGold()) + { + case 1: + { + price = (unsigned int)(GetFakePrice(oldItem)*sTransmogrification->GetGoldModifier()); + } + break; + case 2: + { + price = (unsigned int)sTransmogrification->GetGoldCost(); + } + break; + } + char tokenCost[250] = "\n"; + if(sTransmogrification->GetRequireToken()) + snprintf(tokenCost, 250, "\n\n%u x %s", sTransmogrification->GetTokenAmount(), GetItemName(sObjectMgr->GetItemTemplate(sTransmogrification->GetTokenEntry()), session).c_str()); + + for(uint8 i = INVENTORY_SLOT_ITEM_START; i < INVENTORY_SLOT_ITEM_END; i++) + { + if(limit > 30) + break; + if(Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i)) + { + uint32 display = newItem->GetTemplate()->DisplayInfoID; + if(Transmogrification::SuitableForTransmogrification(player, oldItem, newItem) == ERR_FAKE_OK) + { + if(_items[lowGUID].find(display) == _items[lowGUID].end()) + { + limit++; + _items[lowGUID][display] = newItem; + player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_INTERACT_1, GetItemName(newItem->GetTemplate(), session), uiAction, display, session->GetTrinityString(LANG_POPUP_TRANSMOGRIFY)+GetItemName(newItem->GetTemplate(), session)+tokenCost, price, false); + } + } + } + } + + for(uint8 i = INVENTORY_SLOT_BAG_START; i < INVENTORY_SLOT_BAG_END; i++) + { + if(Bag* bag = player->GetBagByPos(i)) + { + for (uint32 j = 0; j < bag->GetBagSize(); j++) + { + if(limit > 30) + break; + if(Item* newItem = player->GetItemByPos(i, j)) + { + uint32 display = newItem->GetTemplate()->DisplayInfoID; + if(Transmogrification::SuitableForTransmogrification(player, oldItem, newItem) == ERR_FAKE_OK) + { + if(_items[lowGUID].find(display) == _items[lowGUID].end()) + { + limit++; + _items[lowGUID][display] = newItem; + player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_INTERACT_1, GetItemName(newItem->GetTemplate(), session), uiAction, display, session->GetTrinityString(LANG_POPUP_TRANSMOGRIFY)+GetItemName(newItem->GetTemplate(), session)+tokenCost, price, false); + } + } + } + } + } + } + + char removeOnePopup[250]; + snprintf(removeOnePopup, 250, session->GetTrinityString(LANG_POPUP_REMOVE_ONE), GetSlotName(uiAction, session)); + player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_INTERACT_1, session->GetTrinityString(LANG_OPTION_REMOVE_ONE), EQUIPMENT_SLOT_END+3, uiAction, removeOnePopup, 0, false); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, session->GetTrinityString(LANG_OPTION_BACK), EQUIPMENT_SLOT_END+1, 0); + player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); + } + else + OnGossipHello(player, creature); + } + break; + + case EQUIPMENT_SLOT_END+1: // Back + { + OnGossipHello(player, creature); + } + break; + + case EQUIPMENT_SLOT_END+2: // Remove Transmogrifications + { + bool removed = false; + for(uint8 Slot = EQUIPMENT_SLOT_START; Slot < EQUIPMENT_SLOT_END; Slot++) + { + if(Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, Slot)) + { + if(Transmogrification::DeleteFakeEntry(newItem) && !removed) + removed = true; + } + } + + if(removed) + { + session->SendAreaTriggerMessage(session->GetTrinityString(LANG_REM_TRANSMOGRIFICATIONS_ITEMS)); + player->PlayDirectSound(3337); + } + else + session->SendNotification(session->GetTrinityString(LANG_ERR_NO_TRANSMOGRIFICATIONS)); + OnGossipHello(player, creature); + } + break; + + case EQUIPMENT_SLOT_END+3: // Remove Transmogrification from single item + { + if(Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, uiAction)) + { + if(Transmogrification::DeleteFakeEntry(newItem)) + { + session->SendAreaTriggerMessage(session->GetTrinityString(LANG_REM_TRANSMOGRIFICATION_ITEM), GetSlotName(uiAction, session)); + player->PlayDirectSound(3337); + } + else + session->SendNotification(session->GetTrinityString(LANG_ERR_NO_TRANSMOGRIFICATION), GetSlotName(uiAction, session)); + } + OnGossipSelect(player, creature, EQUIPMENT_SLOT_END, uiAction); + } + break; + + default: // Transmogrify + { + uint32 lowGUID = player->GetGUIDLow(); + if(!sTransmogrification->GetRequireToken() || player->GetItemCount(sTransmogrification->GetTokenEntry()) >= sTransmogrification->GetTokenAmount()) + { + if(Item* oldItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, sender)) + { + if(_items[lowGUID].find(uiAction) != _items[lowGUID].end() && _items[lowGUID][uiAction]->IsInWorld()) + { + Item* newItem = _items[lowGUID][uiAction]; + if(newItem->GetOwnerGUID() == player->GetGUIDLow() && (newItem->IsInBag() || newItem->GetBagSlot() == INVENTORY_SLOT_BAG_0) && Transmogrification::SuitableForTransmogrification(player, oldItem, newItem) == ERR_FAKE_OK) + { + switch(sTransmogrification->GetRequireGold()) + { + case 1: + { + player->ModifyMoney(-1*(uint32)(GetFakePrice(oldItem)*sTransmogrification->GetGoldModifier())); + } + break; + + case 2: + { + player->ModifyMoney(-1*(unsigned int)sTransmogrification->GetGoldCost()); + } + break; + } + if(sTransmogrification->GetRequireToken()) + player->DestroyItemCount(sTransmogrification->GetTokenEntry(), sTransmogrification->GetTokenAmount(), true); + Transmogrification::SetFakeEntry(oldItem, newItem->GetEntry()); + newItem->SetNotRefundable(player); + newItem->SetBinding(true); + player->PlayDirectSound(3337); + session->SendAreaTriggerMessage(session->GetTrinityString(LANG_ITEM_TRANSMOGRIFIED), GetSlotName(sender, session)); + } + else + session->SendNotification(session->GetTrinityString(LANG_ERR_NO_ITEM_SUITABLE)); + } + else + session->SendNotification(session->GetTrinityString(LANG_ERR_NO_ITEM_EXISTS)); + } + else + session->SendNotification(session->GetTrinityString(LANG_ERR_EQUIP_SLOT_EMPTY)); + } + else + session->SendNotification(session->GetTrinityString(LANG_ERR_NO_TOKEN), GetItemName(sObjectMgr->GetItemTemplate(sTransmogrification->GetTokenEntry()), session).c_str()); + _items[lowGUID].clear(); + OnGossipSelect(player, creature, EQUIPMENT_SLOT_END, sender); + } + break; + } + return true; + } + +private: + + std::map > _items; // _items[lowGUID][DISPLAY] = item + + const char * GetSlotName(uint8 slot, WorldSession* session) + { + switch(slot) + { + case EQUIPMENT_SLOT_HEAD : return session->GetTrinityString(LANG_SLOT_NAME_HEAD); + case EQUIPMENT_SLOT_SHOULDERS : return session->GetTrinityString(LANG_SLOT_NAME_SHOULDERS); + case EQUIPMENT_SLOT_BODY : return session->GetTrinityString(LANG_SLOT_NAME_BODY); + case EQUIPMENT_SLOT_CHEST : return session->GetTrinityString(LANG_SLOT_NAME_CHEST); + case EQUIPMENT_SLOT_WAIST : return session->GetTrinityString(LANG_SLOT_NAME_WAIST); + case EQUIPMENT_SLOT_LEGS : return session->GetTrinityString(LANG_SLOT_NAME_LEGS); + case EQUIPMENT_SLOT_FEET : return session->GetTrinityString(LANG_SLOT_NAME_FEET); + case EQUIPMENT_SLOT_WRISTS : return session->GetTrinityString(LANG_SLOT_NAME_WRISTS); + case EQUIPMENT_SLOT_HANDS : return session->GetTrinityString(LANG_SLOT_NAME_HANDS); + case EQUIPMENT_SLOT_BACK : return session->GetTrinityString(LANG_SLOT_NAME_BACK); + case EQUIPMENT_SLOT_MAINHAND : return session->GetTrinityString(LANG_SLOT_NAME_MAINHAND); + case EQUIPMENT_SLOT_OFFHAND : return session->GetTrinityString(LANG_SLOT_NAME_OFFHAND); + case EQUIPMENT_SLOT_RANGED : return session->GetTrinityString(LANG_SLOT_NAME_RANGED); + case EQUIPMENT_SLOT_TABARD : return session->GetTrinityString(LANG_SLOT_NAME_TABARD); + default: return NULL; + } + } + + std::string GetItemName(const ItemTemplate* itemTemplate, WorldSession* session) + { + std::string name = itemTemplate->Name1; + int loc_idx = session->GetSessionDbLocaleIndex(); + if(loc_idx >= 0) + if(ItemLocale const* il = sObjectMgr->GetItemLocale(itemTemplate->ItemId)) + sObjectMgr->GetLocaleString(il->Name, loc_idx, name); + return name; + } + + uint32 GetFakePrice(Item* item) + { + uint32 sellPrice = item->GetTemplate()->SellPrice; + uint32 minPrice = item->GetTemplate()->RequiredLevel * 1176; + if(sellPrice < minPrice) + sellPrice = minPrice; + return sellPrice; + } +}; + +class Player_Transmogrify : public PlayerScript + +{ + +public: + + Player_Transmogrify() : PlayerScript("Player_Transmogrify") { } + + void OnLogin(Player* player) + { + uint32 playerGUID = player->GetGUIDLow(); + entryMap.erase(playerGUID); + QueryResult result = CharacterDatabase.PQuery("SELECT GUID, FakeEntry FROM custom_transmogrification WHERE Owner = %u", playerGUID); + if(result) + { + do + { + uint32 itemGUID = (*result)[0].GetUInt32(); + uint32 fakeEntry = (*result)[1].GetUInt32(); + if(sObjectMgr->GetItemTemplate(fakeEntry)) + { + dataMap[itemGUID] = playerGUID; + entryMap[playerGUID][itemGUID] = fakeEntry; + } + else + { + sLog->outError("Item entry (Entry: %u, itemGUID: %u, playerGUID: %u) does not exist, deleting.", fakeEntry, itemGUID, playerGUID); + Transmogrification::DeleteFakeFromDB(itemGUID); + } + } while(result->NextRow()); + + for(uint8 Slot = EQUIPMENT_SLOT_START; Slot < EQUIPMENT_SLOT_END; Slot++) + { + if(Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, Slot)) + if(entryMap.find(playerGUID) != entryMap.end()) + if(entryMap[playerGUID].find(item->GetGUIDLow()) != entryMap[playerGUID].end()) + player->UpdateUInt32Value(PLAYER_VISIBLE_ITEM_1_ENTRYID + (item->GetSlot() * 2), entryMap[playerGUID][item->GetGUIDLow()]); + } + } + } + + void OnLogout(Player* player) + { + uint32 pGUID = player->GetGUIDLow(); + if(entryMap.find(pGUID) == entryMap.end()) + return; + for(transmogData::iterator it = entryMap[pGUID].begin(); it != entryMap[pGUID].end(); ++it) + { + dataMap.erase(it->first); + } + entryMap.erase(pGUID); + } +}; + +class Config_Transmogrify : public WorldScript +{ + +public: + + Config_Transmogrify() : WorldScript("Config_Transmogrify") { } + + void OnConfigLoad(bool reload) + { + sTransmogrification->LoadConfig(); + } + + void OnStartup() + { + sTransmogrification->LoadConfig(); + sLog->outString("Deleting non-existing transmogrification entries..."); + CharacterDatabase.Execute("DELETE FROM custom_transmogrification WHERE NOT EXISTS (SELECT 1 FROM item_instance WHERE item_instance.guid = custom_transmogrification.GUID)"); + } +}; + +void AddSC_NPC_Transmogrify() +{ + new NPC_Transmogrify(); + new Player_Transmogrify(); + new Config_Transmogrify(); +} diff --git a/src/server/scripts/Custom/Transmogrification.h b/src/server/scripts/Custom/Transmogrification.h new file mode 100644 index 0000000..661e48a --- /dev/null +++ b/src/server/scripts/Custom/Transmogrification.h @@ -0,0 +1,140 @@ +#ifndef DEF_TRANSMOGRIFICATION_H +#define DEF_TRANSMOGRIFICATION_H + +#include "Config.h" + +enum TransmogTrinityStrings +{ + LANG_REM_TRANSMOGRIFICATIONS_ITEMS = 11100, + LANG_ERR_NO_TRANSMOGRIFICATIONS = 11101, + LANG_REM_TRANSMOGRIFICATION_ITEM = 11102, + LANG_ERR_NO_TRANSMOGRIFICATION = 11103, + LANG_ITEM_TRANSMOGRIFIED = 11104, + LANG_ERR_NO_ITEM_SUITABLE = 11105, + LANG_ERR_NO_ITEM_EXISTS = 11106, + LANG_ERR_EQUIP_SLOT_EMPTY = 11107, + + LANG_SLOT_NAME_HEAD = 11108, + LANG_SLOT_NAME_SHOULDERS = 11109, + LANG_SLOT_NAME_BODY = 11110, + LANG_SLOT_NAME_CHEST = 11111, + LANG_SLOT_NAME_WAIST = 11112, + LANG_SLOT_NAME_LEGS = 11113, + LANG_SLOT_NAME_FEET = 11114, + LANG_SLOT_NAME_WRISTS = 11115, + LANG_SLOT_NAME_HANDS = 11116, + LANG_SLOT_NAME_BACK = 11117, + LANG_SLOT_NAME_MAINHAND = 11118, + LANG_SLOT_NAME_OFFHAND = 11119, + LANG_SLOT_NAME_RANGED = 11120, + LANG_SLOT_NAME_TABARD = 11121, + + LANG_OPTION_BACK = 11122, + LANG_OPTION_REMOVE_ALL = 11123, + LANG_POPUP_REMOVE_ALL = 11124, + LANG_OPTION_UPDATE_MENU = 11125, + LANG_OPTION_REMOVE_ONE = 11126, + LANG_POPUP_REMOVE_ONE = 11127, + LANG_POPUP_TRANSMOGRIFY = 11128, + + LANG_ERR_NO_TOKEN = 11129 +}; + +enum TransmogrificationResult // custom +{ + ERR_FAKE_NEW_BAD_QUALITY, + ERR_FAKE_OLD_BAD_QUALITY, + ERR_FAKE_SAME_DISPLAY, + ERR_FAKE_SAME_DISPLAY_FAKE, + ERR_FAKE_CANT_USE, + ERR_FAKE_NOT_SAME_CLASS, + ERR_FAKE_BAD_CLASS, + ERR_FAKE_BAD_SUBLCASS, + ERR_FAKE_BAD_INVENTORYTYPE, + ERR_FAKE_OK +}; + +class Transmogrification +{ +public: + Transmogrification() { }; + ~Transmogrification() { }; + + uint32 GetRequireGold() { return RequireGold; } + float GetGoldModifier() { return GoldModifier; } + uint32 GetGoldCost() { return GoldCost; } + + bool GetRequireToken() { return RequireToken; } + uint32 GetTokenEntry() { return TokenEntry; } + uint32 GetTokenAmount() { return TokenAmount; } + + static uint32 GetFakeEntry(Item* item); + static void DeleteFakeFromDB(uint32 lowGUID); + static bool DeleteFakeEntry(Item* item); + static void SetFakeEntry(Item* item, uint32 entry); + static uint32 SuitableForTransmogrification(Player* player, Item* oldItem, Item* newItem); + + bool AllowedQuality(uint32 quality) // Only thing used elsewhere (Player.cpp) + { + switch(quality) + { + case ITEM_QUALITY_POOR: return AllowPoor; + case ITEM_QUALITY_NORMAL: return AllowCommon; + case ITEM_QUALITY_UNCOMMON: return AllowUncommon; + case ITEM_QUALITY_RARE: return AllowRare; + case ITEM_QUALITY_EPIC: return AllowEpic; + case ITEM_QUALITY_LEGENDARY: return AllowLegendary; + case ITEM_QUALITY_ARTIFACT: return AllowArtifact; + case ITEM_QUALITY_HEIRLOOM: return AllowHeirloom; + default: return false; + } + } + + void LoadConfig() + { + RequireGold = sWorld->getIntConfig(CONFIG_REQUIREGOLD); + GoldModifier = sWorld->getFloatConfig(CONFIG_GOLDMODIFIER); + GoldCost = sWorld->getIntConfig(CONFIG_GOLDCOST); + + RequireToken = sWorld->getBoolConfig(CONFIG_REQUIRETOKEN); + TokenEntry = sWorld->getIntConfig(CONFIG_TOKENENTRY); + TokenAmount = sWorld->getIntConfig(CONFIG_TOKENAMOUNT); + + AllowPoor = sWorld->getBoolConfig(CONFIG_ALLOWPOOR); + AllowCommon = sWorld->getBoolConfig(CONFIG_ALLOWCOMMON); + AllowUncommon = sWorld->getBoolConfig(CONFIG_ALLOWUNCOMMON); + AllowRare = sWorld->getBoolConfig(CONFIG_ALLOWRARE); + AllowEpic = sWorld->getBoolConfig(CONFIG_ALLOWEPIC); + AllowLegendary = sWorld->getBoolConfig(CONFIG_ALLOWLEGENDARY); + AllowArtifact = sWorld->getBoolConfig(CONFIG_ALLOWARTIFACT); + AllowHeirloom = sWorld->getBoolConfig(CONFIG_ALLOWHEIRLOOM); + + if(!sObjectMgr->GetItemTemplate(TokenEntry)) + { + sLog->outError("Transmogrification.TokenEntry (%u) does not exist. Using default.", TokenEntry); + TokenEntry = 49426; + } + } + +private: + + uint32 RequireGold; + float GoldModifier; + uint32 GoldCost; + + bool RequireToken; + uint32 TokenEntry; + uint32 TokenAmount; + + bool AllowPoor; + bool AllowCommon; + bool AllowUncommon; + bool AllowRare; + bool AllowEpic; + bool AllowLegendary; + bool AllowArtifact; + bool AllowHeirloom; +}; +#define sTransmogrification ACE_Singleton::instance() + +#endif diff --git a/src/server/scripts/Custom/npc_teleport.cpp b/src/server/scripts/Custom/npc_teleport.cpp new file mode 100644 index 0000000..dcb21f9 --- /dev/null +++ b/src/server/scripts/Custom/npc_teleport.cpp @@ -0,0 +1,210 @@ + + +#include "ScriptPCH.h" +#include "sc_npc_teleport.h" +#include + +#define GOSSIP_SHOW_DEST 1000 +#define GOSSIP_TELEPORT 1001 +#define GOSSIP_NEXT_PAGEC 1002 +#define GOSSIP_PREV_PAGEC 1003 +#define GOSSIP_NEXT_PAGED 1004 +#define GOSSIP_PREV_PAGED 1005 +#define GOSSIP_MAIN_MENU 1006 + +#define SPELL_ID_PASSIVE_RESURRECTION_SICKNESS 15007 +#define SPELL_VISUAL_TELEPORT 35517 + +#define NB_ITEM_PAGE 10 +#define MSG_CAT 100000 +#define MSG_DEST 100001 + +#define NEXT_PAGE "-> [Page Suivante]" +#define PREV_PAGE "<- [Page Précédente]" +#define MAIN_MENU "<= [Menu]" + + +using namespace nsNpcTel; + + +namespace +{ + Page PageC, PageD; + Page Cat; + + // Conversion function int->string + std::string ConvertStr(const int64 &val) + { + std::ostringstream ostr; + ostr << val; + return ostr.str(); + } + + // Conversion function intMoney->stringMoney + std::string ConvertMoney(const uint32 &Money) + { + std::string Str(ConvertStr(Money)); + uint32 SizeStr = Str.length(); + + if (SizeStr > 4) + Str = Str.insert(Str.length()-4, "po"); + if (SizeStr > 2) + Str = Str.insert(Str.length()-2, "pa"); + Str += "pc"; + + return Str; + } + + // Teleport Player + void Teleport(Player * const player, const uint16 &map, + const float &X, const float &Y, const float &Z, const float &orient) + { + player->CastSpell(player, SPELL_VISUAL_TELEPORT, true); + player->TeleportTo(map, X, Y, Z, orient); + } + + // Display categories + void AffichCat(Player * const player, Creature * const creature) + { + if (PageC[player] > 0) + player->ADD_GOSSIP_ITEM(7, PREV_PAGE, GOSSIP_PREV_PAGEC, 0); + + VCatDest_t i (PageC[player] * NB_ITEM_PAGE); + for ( ; i < TabCatDest.size() && i < (NB_ITEM_PAGE * (PageC[player] + 1)); ++i) + { + if (TabCatDest[i].IsAllowedToTeleport(player)) + player->ADD_GOSSIP_ITEM(7, TabCatDest[i].GetName(player->isGameMaster()).c_str(), GOSSIP_SHOW_DEST, i); + } + + if (i < TabCatDest.size()) + player->ADD_GOSSIP_ITEM(7, NEXT_PAGE, GOSSIP_NEXT_PAGEC, 0); + + player->SEND_GOSSIP_MENU(MSG_CAT, creature->GetGUID()); + } + + // Display destination categories + void AffichDest(Player * const player, Creature * const creature) + { + if (PageD[player] > 0) + player->ADD_GOSSIP_ITEM(7, PREV_PAGE, GOSSIP_PREV_PAGED, 0); + + CatDest::VDest_t i (PageD[player] * NB_ITEM_PAGE); + for ( ; i < TabCatDest[Cat[player]].size() && i < (NB_ITEM_PAGE * (PageD[player] + 1)); ++i) + { + player->ADD_GOSSIP_ITEM(5, TabCatDest[Cat[player]].GetDest(i).m_name.c_str(), GOSSIP_TELEPORT, i); + } + + if (i < TabCatDest[Cat[player]].size()) + player->ADD_GOSSIP_ITEM(7, NEXT_PAGE, GOSSIP_NEXT_PAGED, 0); + + if (CatDest::CountOfCategoryAllowedBy(player) > 1) + player->ADD_GOSSIP_ITEM(7, MAIN_MENU, GOSSIP_MAIN_MENU, 0); + + player->SEND_GOSSIP_MENU(MSG_DEST, creature->GetGUID()); + } + + // Verification before teleportation + void ActionTeleport(Player * const player, Creature * const creature, const uint32 &id) + { + Dest dest (TabCatDest[Cat[player]].GetDest(id)); + + if (player->getLevel() < dest.m_level && !player->isGameMaster()) + { + std::string msg ("Vous n'avez pas le level requis. Cette destination requière le level " + ConvertStr(dest.m_level) + "."); + creature->MonsterWhisper(msg.c_str(), player->GetGUID()); + return; + } + + if (player->GetMoney() < dest.m_cost && !player->isGameMaster()) + { + std::string msg ("Vous n'avez pas assez d'argents. Le prix de la téléportation est de " + ConvertMoney(dest.m_cost) + "."); + creature->MonsterWhisper(msg.c_str(), player->GetGUID()); + return; + } + + if (!player->isGameMaster() && dest.m_cost) + player->ModifyMoney(-1 * dest.m_cost); + + Teleport(player, dest.m_map, dest.m_X, dest.m_Y, dest.m_Z, dest.m_orient); + } +} + +class npc_teleport : public CreatureScript +{ +public: + npc_teleport() : CreatureScript("npc_teleport") {} + +bool OnGossipHello(Player *player, Creature *creature) +{ + PageC(player) = PageD(player) = Cat(player) = 0; + + if(player->isInCombat()) + { + player->CLOSE_GOSSIP_MENU(); + creature->MonsterWhisper("Vous êtes en Combat. Revenez plus tard", player->GetGUID()); + return true; + } + AffichCat(player, creature); + return true; +} + +bool OnGossipSelect(Player *player, Creature *creature, uint32 sender, uint32 param) +{ + player->PlayerTalkClass->ClearMenus(); + switch(sender) + { + // Display destinations + case GOSSIP_SHOW_DEST: + Cat(player) = param; + AffichDest(player, creature); + break; + + // Previous categories page + case GOSSIP_PREV_PAGEC: + --PageC(player); + AffichCat(player, creature); + break; + + // Next page categories + case GOSSIP_NEXT_PAGEC: + ++PageC(player); + AffichCat(player, creature); + break; + + // Previous destinations page + case GOSSIP_PREV_PAGED: + --PageD(player); + AffichDest(player, creature); + break; + + // Next destination page + case GOSSIP_NEXT_PAGED: + ++PageD(player); + AffichDest(player, creature); + break; + + // Display main menu + case GOSSIP_MAIN_MENU: + OnGossipHello(player, creature); + break; + + // Teleportation + case GOSSIP_TELEPORT: + player->CLOSE_GOSSIP_MENU(); + if(player->HasAura(SPELL_ID_PASSIVE_RESURRECTION_SICKNESS,0)) { + creature->CastSpell(player,38588,false); // Healing effect + player->RemoveAurasDueToSpell(SPELL_ID_PASSIVE_RESURRECTION_SICKNESS); + } + + ActionTeleport(player, creature, param); + break; + } + return true; +} +}; + +void AddSC_npc_teleport() +{ + new npc_teleport; +} + diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp index 57fc417..78daeff 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h b/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h index 66ed104..33d5b1a 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp index 9b8eb96..61b1409 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp index db0496c..270ebd3 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp index cb922f1..f17e7cb 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp index effd4a8..baaab4d 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp index 2228566..1292d37 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp index a36afe8..5ade17a 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp index 8abc507..d68cdde 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp index c08b180..1a70824 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp index 25a8a09..a589d0c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp index 828655d..370e64e 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp index c4ff79a..0912307 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp index 2bd19c9..5af834e 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp index 31c0d49..899dad4 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp index 6dd7044..490eee4 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp index cf112a9..07dfb89 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_ebonroc.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_ebonroc.cpp index 1501300..5080abc 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_ebonroc.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_ebonroc.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_firemaw.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_firemaw.cpp index d70e1d5..b20a61a 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_firemaw.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_firemaw.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp index c5e8129..149bf83 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp index 6d19fe1..a97bedd 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp index efa058c..cc82a79 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp index 95a6a2e..8467b6c 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp index 260c2fe..6f5e404 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp b/src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp index 35ee9bf..c060275 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp index 26dce07..008c95d 100644 --- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp +++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h index 7ad0f8c..30f54d9 100644 --- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h +++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp index d7fe1f4..d6e130a 100644 --- a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp +++ b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp index 953bd37..4c8f245 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp index c8f7d78..f8fbeb5 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp index 594b4c5..3a9646f 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp index 8a86e4a..655c74e 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp index d2620be..15e77fc 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp index 5a2cda3..06ee2aa 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp index 87a719d..3ee632e 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp index a4e61f5..3ed2e67 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp index 6388fc2..31a191b 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp index faadf80..ce22a3c 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp index ccd212e..9b33e50 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index f210029..e37e46b 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h index e1c231d..9321614 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp index 5466d3d..7158597 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp index 84cf629..fd677c4 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp index c7bbf0d..bc8ea15 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp index b321efb..d1fb502 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp index 073511d..df90fe4 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp index a087f13..ed0b5f5 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h index b41ea6c..f4f32a6 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_majordomo_executus.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_majordomo_executus.cpp index c10abc1..59ccc01 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_majordomo_executus.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_majordomo_executus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/OperationGnomeregan/operation_gnomeregan.cpp b/src/server/scripts/EasternKingdoms/OperationGnomeregan/operation_gnomeregan.cpp index 1f300f1..5a99d46 100644 --- a/src/server/scripts/EasternKingdoms/OperationGnomeregan/operation_gnomeregan.cpp +++ b/src/server/scripts/EasternKingdoms/OperationGnomeregan/operation_gnomeregan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/OperationGnomeregan/operation_gnomeregan.h b/src/server/scripts/EasternKingdoms/OperationGnomeregan/operation_gnomeregan.h index 51c179b..10876db 100644 --- a/src/server/scripts/EasternKingdoms/OperationGnomeregan/operation_gnomeregan.h +++ b/src/server/scripts/EasternKingdoms/OperationGnomeregan/operation_gnomeregan.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 01b831a..487e875 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index 5a28681..de77bcc 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 3852e60..379413a 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/the_scarlet_enclave.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/the_scarlet_enclave.cpp index af95705..5ceedcd 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/the_scarlet_enclave.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/the_scarlet_enclave.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp index 3eb8fae..ee168ff 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp index a72faa5..f35bd2d 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp index dcba526..0e75202 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index 025ef95..263c7d9 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp index 087c4ef..19f9b8d 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp index a7cc46a..2529489 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp index 252999f..792499f 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp index 7280d75..d6148d4 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp index 8164f43..c3fdc45 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp index 0051603..7624802 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp index 89e3eec..2364c1f 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h index aa08853..381e9ec 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp index 6391b79..785939d 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp index 4d9792f..f5b951a 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h index bd6a16b..6ab779a 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp index 39153c0..4af34f5 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index f7dc372..27e8092 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp index aac5a40..cb054f4 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index f464684..352dfb3 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index ecf587f..c341e60 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index 83e7835..ceca517 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp index d037b73..f2d1a27 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h b/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h index 7171f9d..9fa9115 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp index e71289d..0af6392 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp index 0cc164c..abbfdb4 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Uldaman/uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/uldaman.cpp index 0fe08ef..7a4aee0 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/uldaman.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/Uldaman/uldaman.h b/src/server/scripts/EasternKingdoms/Uldaman/uldaman.h index c899691..8b57f31 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/uldaman.h +++ b/src/server/scripts/EasternKingdoms/Uldaman/uldaman.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp index 37818d0..6d06faa 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp index 3d1e3c3..2fa1cde 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index e14d613..ff28f26 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 99431f4..948df26 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index 3226202..7c5f5e8 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp index 51dc56f..547eb6a 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index 0dd0a06..fdbe21f 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index 16c6777..9f7ece4 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp index 9a8f95d..e30a1ea 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp index fc9cb27..ea0829d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index 380eab5..92f149d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp index 1a60073..66e246d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp index 5db1c58..ffc7b36 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index 4d79ae7..7ae2363 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index 755f09e..cfd2d35 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/arathi_highlands.cpp b/src/server/scripts/EasternKingdoms/arathi_highlands.cpp index 437a9bd..9a41022 100644 --- a/src/server/scripts/EasternKingdoms/arathi_highlands.cpp +++ b/src/server/scripts/EasternKingdoms/arathi_highlands.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/blasted_lands.cpp b/src/server/scripts/EasternKingdoms/blasted_lands.cpp index 7af917e..4f5f94d 100644 --- a/src/server/scripts/EasternKingdoms/blasted_lands.cpp +++ b/src/server/scripts/EasternKingdoms/blasted_lands.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/boss_kruul.cpp b/src/server/scripts/EasternKingdoms/boss_kruul.cpp index d7dc62e..204a943 100644 --- a/src/server/scripts/EasternKingdoms/boss_kruul.cpp +++ b/src/server/scripts/EasternKingdoms/boss_kruul.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/burning_steppes.cpp b/src/server/scripts/EasternKingdoms/burning_steppes.cpp index e4b4e9e..f8b89d3 100644 --- a/src/server/scripts/EasternKingdoms/burning_steppes.cpp +++ b/src/server/scripts/EasternKingdoms/burning_steppes.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/duskwood.cpp b/src/server/scripts/EasternKingdoms/duskwood.cpp index da09586..cad7417 100644 --- a/src/server/scripts/EasternKingdoms/duskwood.cpp +++ b/src/server/scripts/EasternKingdoms/duskwood.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/eastern_plaguelands.cpp b/src/server/scripts/EasternKingdoms/eastern_plaguelands.cpp index 33303ea..d817469 100644 --- a/src/server/scripts/EasternKingdoms/eastern_plaguelands.cpp +++ b/src/server/scripts/EasternKingdoms/eastern_plaguelands.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/eversong_woods.cpp b/src/server/scripts/EasternKingdoms/eversong_woods.cpp index 26b8941..2ddc5db 100644 --- a/src/server/scripts/EasternKingdoms/eversong_woods.cpp +++ b/src/server/scripts/EasternKingdoms/eversong_woods.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ghostlands.cpp b/src/server/scripts/EasternKingdoms/ghostlands.cpp index 6b25783..5374099 100644 --- a/src/server/scripts/EasternKingdoms/ghostlands.cpp +++ b/src/server/scripts/EasternKingdoms/ghostlands.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/hinterlands.cpp b/src/server/scripts/EasternKingdoms/hinterlands.cpp index 25b06e9..533c557 100644 --- a/src/server/scripts/EasternKingdoms/hinterlands.cpp +++ b/src/server/scripts/EasternKingdoms/hinterlands.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/ironforge.cpp b/src/server/scripts/EasternKingdoms/ironforge.cpp index a1fb286..4834706 100644 --- a/src/server/scripts/EasternKingdoms/ironforge.cpp +++ b/src/server/scripts/EasternKingdoms/ironforge.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/isle_of_queldanas.cpp index 1b8dc33..6339f60 100644 --- a/src/server/scripts/EasternKingdoms/isle_of_queldanas.cpp +++ b/src/server/scripts/EasternKingdoms/isle_of_queldanas.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/loch_modan.cpp b/src/server/scripts/EasternKingdoms/loch_modan.cpp index 883762d..2835932 100644 --- a/src/server/scripts/EasternKingdoms/loch_modan.cpp +++ b/src/server/scripts/EasternKingdoms/loch_modan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/redridge_mountains.cpp b/src/server/scripts/EasternKingdoms/redridge_mountains.cpp index 416db52..7397e76 100644 --- a/src/server/scripts/EasternKingdoms/redridge_mountains.cpp +++ b/src/server/scripts/EasternKingdoms/redridge_mountains.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/searing_gorge.cpp b/src/server/scripts/EasternKingdoms/searing_gorge.cpp index 8f7d102..e90d2e4 100644 --- a/src/server/scripts/EasternKingdoms/searing_gorge.cpp +++ b/src/server/scripts/EasternKingdoms/searing_gorge.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/silvermoon_city.cpp b/src/server/scripts/EasternKingdoms/silvermoon_city.cpp index dbbda2f..39fbe64 100644 --- a/src/server/scripts/EasternKingdoms/silvermoon_city.cpp +++ b/src/server/scripts/EasternKingdoms/silvermoon_city.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/silverpine_forest.cpp index 669d404..b9a4814 100644 --- a/src/server/scripts/EasternKingdoms/silverpine_forest.cpp +++ b/src/server/scripts/EasternKingdoms/silverpine_forest.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/stormwind_city.cpp b/src/server/scripts/EasternKingdoms/stormwind_city.cpp index 3c40f61..90087dd 100644 --- a/src/server/scripts/EasternKingdoms/stormwind_city.cpp +++ b/src/server/scripts/EasternKingdoms/stormwind_city.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/stranglethorn_vale.cpp b/src/server/scripts/EasternKingdoms/stranglethorn_vale.cpp index fa82ddb..3317efc 100644 --- a/src/server/scripts/EasternKingdoms/stranglethorn_vale.cpp +++ b/src/server/scripts/EasternKingdoms/stranglethorn_vale.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp b/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp index 863b134..7214465 100644 --- a/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp +++ b/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp @@ -2,7 +2,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/tirisfal_glades.cpp b/src/server/scripts/EasternKingdoms/tirisfal_glades.cpp index a51e7f9..51e4ee5 100644 --- a/src/server/scripts/EasternKingdoms/tirisfal_glades.cpp +++ b/src/server/scripts/EasternKingdoms/tirisfal_glades.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/undercity.cpp b/src/server/scripts/EasternKingdoms/undercity.cpp index 477de4d..90a3e63 100644 --- a/src/server/scripts/EasternKingdoms/undercity.cpp +++ b/src/server/scripts/EasternKingdoms/undercity.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/western_plaguelands.cpp b/src/server/scripts/EasternKingdoms/western_plaguelands.cpp index ff79f8d..c5bba3f 100644 --- a/src/server/scripts/EasternKingdoms/western_plaguelands.cpp +++ b/src/server/scripts/EasternKingdoms/western_plaguelands.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/westfall.cpp b/src/server/scripts/EasternKingdoms/westfall.cpp index a2505b8..0b37e86 100644 --- a/src/server/scripts/EasternKingdoms/westfall.cpp +++ b/src/server/scripts/EasternKingdoms/westfall.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/EasternKingdoms/wetlands.cpp b/src/server/scripts/EasternKingdoms/wetlands.cpp index 2f1c6ee..300804c 100644 --- a/src/server/scripts/EasternKingdoms/wetlands.cpp +++ b/src/server/scripts/EasternKingdoms/wetlands.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp index 79ff308..479801d 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp index f05c5af..76479dd 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp index a9c0bcd..8c111d8 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp index a4a8d4b..c71aa4c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp index 5bc2238..9ba2fbf 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp index 4d6d795..5f4c2ea 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h index f625193..a3ea901 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp index 54332a8..34a3c72 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h index 929e405..75f4887 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp index e08f7eb..a4f3c1f 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.h index 1439ea3..bf57639 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp index a598a74..ebed8e7 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp index 50c14b4..ac64dea 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp index 909500a..3734367 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 e0813b2..1de9d07 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp index 042518b..2a865e0 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp index 3358570..e8b0097 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp index 0ad91ae..d996430 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h index 0f54fd4..a57307d 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp index 4ec1b69..7a72067 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp index 8cf561f..182514d 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp index be33d08..c9400f2 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h b/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h index 62f6ccc..3d14414 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h +++ b/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp index a03a2b5..3d669b2 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp index 0327a21..7a24271 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp index 753b5b0..c888d2b 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp index 289f548..5a7f8c4 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp index 9798d16..c47380f 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp index 59dd11e..4d856a3 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h index e755278..bcfb7a7 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp index aaa78e9..f7178f2 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp index f60b00d..06fe4d9 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h index 5c91cfb..914b75c 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h +++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/azuremyst_isle.cpp b/src/server/scripts/Kalimdor/azuremyst_isle.cpp index 8ded21a..f7545b2 100644 --- a/src/server/scripts/Kalimdor/azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/azuremyst_isle.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/bloodmyst_isle.cpp index 7b6e825..8392666 100644 --- a/src/server/scripts/Kalimdor/bloodmyst_isle.cpp +++ b/src/server/scripts/Kalimdor/bloodmyst_isle.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/boss_azuregos.cpp b/src/server/scripts/Kalimdor/boss_azuregos.cpp index 218908d..cc49e68 100644 --- a/src/server/scripts/Kalimdor/boss_azuregos.cpp +++ b/src/server/scripts/Kalimdor/boss_azuregos.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/darkshore.cpp b/src/server/scripts/Kalimdor/darkshore.cpp index 40bf9d0..147e215 100644 --- a/src/server/scripts/Kalimdor/darkshore.cpp +++ b/src/server/scripts/Kalimdor/darkshore.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/desolace.cpp b/src/server/scripts/Kalimdor/desolace.cpp index 583328e..92804b9 100644 --- a/src/server/scripts/Kalimdor/desolace.cpp +++ b/src/server/scripts/Kalimdor/desolace.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/durotar.cpp b/src/server/scripts/Kalimdor/durotar.cpp index 691b159..7c0d2a1 100644 --- a/src/server/scripts/Kalimdor/durotar.cpp +++ b/src/server/scripts/Kalimdor/durotar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/dustwallow_marsh.cpp index 735da26..2cdd583 100644 --- a/src/server/scripts/Kalimdor/dustwallow_marsh.cpp +++ b/src/server/scripts/Kalimdor/dustwallow_marsh.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/felwood.cpp b/src/server/scripts/Kalimdor/felwood.cpp index 038b29d..60ad0f4 100644 --- a/src/server/scripts/Kalimdor/felwood.cpp +++ b/src/server/scripts/Kalimdor/felwood.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/feralas.cpp b/src/server/scripts/Kalimdor/feralas.cpp index d05ae53..1e776e2 100644 --- a/src/server/scripts/Kalimdor/feralas.cpp +++ b/src/server/scripts/Kalimdor/feralas.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/moonglade.cpp b/src/server/scripts/Kalimdor/moonglade.cpp index 4a0ca74..5927672 100644 --- a/src/server/scripts/Kalimdor/moonglade.cpp +++ b/src/server/scripts/Kalimdor/moonglade.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/mulgore.cpp b/src/server/scripts/Kalimdor/mulgore.cpp index 320e68a..7c4c661 100644 --- a/src/server/scripts/Kalimdor/mulgore.cpp +++ b/src/server/scripts/Kalimdor/mulgore.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/orgrimmar.cpp b/src/server/scripts/Kalimdor/orgrimmar.cpp index 7419dcf..0f70342 100644 --- a/src/server/scripts/Kalimdor/orgrimmar.cpp +++ b/src/server/scripts/Kalimdor/orgrimmar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/silithus.cpp b/src/server/scripts/Kalimdor/silithus.cpp index 5ae3db0..6211a75 100644 --- a/src/server/scripts/Kalimdor/silithus.cpp +++ b/src/server/scripts/Kalimdor/silithus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/tanaris.cpp b/src/server/scripts/Kalimdor/tanaris.cpp index 9b0edd8..93ae15e 100644 --- a/src/server/scripts/Kalimdor/tanaris.cpp +++ b/src/server/scripts/Kalimdor/tanaris.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/teldrassil.cpp b/src/server/scripts/Kalimdor/teldrassil.cpp index a63f0c4..87bca2e 100644 --- a/src/server/scripts/Kalimdor/teldrassil.cpp +++ b/src/server/scripts/Kalimdor/teldrassil.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Kalimdor/the_barrens.cpp b/src/server/scripts/Kalimdor/the_barrens.cpp index ae9e6c5..03a6ccc 100644 --- a/src/server/scripts/Kalimdor/the_barrens.cpp +++ b/src/server/scripts/Kalimdor/the_barrens.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/ahnkahet.h b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/ahnkahet.h index a766e3a..df655af 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/ahnkahet.h +++ b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/ahnkahet.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_elder_nadox.cpp index 94bc135..7815bad 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_elder_nadox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_elder_nadox.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_jedoga_shadowseeker.cpp index 327637a..092e6a5 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_jedoga_shadowseeker.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_jedoga_shadowseeker.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_prince_taldaram.cpp index 2afcd1e..b1915e0 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_prince_taldaram.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/boss_prince_taldaram.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/instance_ahnkahet.cpp index c0e7bee..62e0441 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AhnKahet/instance_ahnkahet.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AhnKahet/instance_ahnkahet.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp index cb238c5..19a52a6 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index 63bf6b2..078cf82 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp index 3deee25..aca5aae 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h index 8e26054..30eb7c2 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus.cpp index dc126c7..da3820d 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 19d3928..435f2e8 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_ragefire.cpp index 2646afe..68a1907 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_ragefire.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_ragefire.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_zarithrian.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_zarithrian.cpp index 5c91a26..15a9cb6 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_zarithrian.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_zarithrian.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp index eaa7874..2955ce6 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h index da55222..75e5891 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp index 9c00463..5930042 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 b88f800..f99c7d0 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 d7c1648..b6331c3 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp index d1252d1..5d955b0 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp index 3b99832..9482238 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -13,8 +13,8 @@ #include "trial_of_the_champion.h" #include "Vehicle.h" -#define GOSSIP_START_EVENT1 "I'm ready to start challenge." -#define GOSSIP_START_EVENT2 "I'm ready for the next challenge." +#define GOSSIP_START_EVENT1 "Nous sommes prêt à relever le Défi." +#define GOSSIP_START_EVENT2 "Nous sommes prêt pour le prochain Défi." #define ORIENTATION 4.714f diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h index b43f142..2caa3b1 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index 356c4c8..a67af26 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp index 6adcc01..a27fb2b 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -311,6 +311,7 @@ struct boss_faction_championsAI : public ScriptedAI void EnterCombat(Unit* /*pWho*/) { + me->AddUnitState(UNIT_STAT_IGNORE_PATHFINDING); DoCast(me, SPELL_ANTI_AOE, true); me->SetInCombatWithZone(); if(pInstance) diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp index 895e13d..0113831 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp index 32f08fb..ba55bd4 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -935,7 +935,7 @@ class boss_icehowl : public CreatureScript SetGazeOn(pTarget); DoScriptText(SAY_TRAMPLE_START, me); me->AddUnitState(UNIT_STAT_IGNORE_PATHFINDING); //generate straight path to prevent buggering - me->GetMotionMaster()->MoveCharge(tramplePos.GetPositionX(), tramplePos.GetPositionY(), tramplePos.GetPositionZ(), 21.0f); + me->GetMotionMaster()->MoveCharge(tramplePos.GetPositionX(), tramplePos.GetPositionY(), tramplePos.GetPositionZ(), 42.0f); me->ClearUnitState(UNIT_STAT_IGNORE_PATHFINDING); m_uiTrampleTimer = IN_MILLISECONDS; m_uiStage = 5; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index 11d9979..f145f5c 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp index 206a61c..e66e571 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -214,7 +214,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript WebDoorGUID = go->GetGUID(); break; case GO_WEST_PORTCULLIS: - WestPortcullisGUID = go->GetGUID(); + WestPortcullisGUID = go->GetGUID(); break; case GO_NORTH_PORTCULLIS: NorthPortcullisGUID = go->GetGUID(); @@ -468,7 +468,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript case GO_WEST_PORTCULLIS: return WestPortcullisGUID; case GO_NORTH_PORTCULLIS: - return NorthPortcullisGUID; + return NorthPortcullisGUID; default: break; } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp index bea4ab8..97e6ed7 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -110,7 +110,7 @@ class npc_announcer_toc10 : public CreatureScript if(!instanceScript) return true; - char const* _message = "We are ready!"; + char const* _message = "Nous sommes Prêt a relever le Défi du Tournois!"; if(pPlayer->isInCombat() || instanceScript->IsEncounterInProgress() || instanceScript->GetData(TYPE_EVENT)) return true; @@ -202,6 +202,7 @@ class npc_announcer_toc10 : public CreatureScript break; case GOSSIP_ACTION_INFO_DEF+5: { + if(instanceScript->GetData(TYPE_LICH_KING) != DONE && !pPlayer->isGameMaster()) return true; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h index 144f8e7..3da6da6 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp index 4756764..2ad2ce0 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp index 0648604..aa0440b 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp index 6ef0f41..4b63c2e 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp index aa9e369..967f6d3 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h b/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h index 6e3dbca..9ba1c26 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h +++ b/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp index 0da2b58..94ed022 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp index 8ea65c8..3996198 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index c37c6b4..a7770a2 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp index c61a6b6..4927cce 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp index cb1f3f8..3ed1550 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index 46874f8..b4ea033 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Gundrak/gundrak.h b/src/server/scripts/Northrend/Gundrak/gundrak.h index 22a595b..fceb073 100644 --- a/src/server/scripts/Northrend/Gundrak/gundrak.h +++ b/src/server/scripts/Northrend/Gundrak/gundrak.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp index 9718743..fee485f 100644 --- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp +++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index e58449f..e25c818 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp index 82ef015..7968bc3 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp index 42d55ff..5941fd0 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -107,8 +107,8 @@ enum Events }; /****************************************SYLVANAS************************************/ -#define GOSSIP_SYLVANAS_ITEM "What would you have of me, Banshee Queen?" -#define GOSSIP_JAINA_ITEM "What would you have of me, my lady?" +#define GOSSIP_SYLVANAS_ITEM "Qu'attendez-vous de moi, Reine banshee ?" +#define GOSSIP_JAINA_ITEM "Qu'attendez-vous de moi, ma dame ?" enum Yells { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/forge_of_souls.h b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/forge_of_souls.h index 0fbc3d5..7a60c76 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/forge_of_souls.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/forge_of_souls.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp index b2abd22..9085adf 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_falric.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_falric.cpp index eda0086..e497885 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_falric.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_falric.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_marwyn.cpp index 0ab1cc2..f0c87f0 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_marwyn.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_marwyn.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_the_lich_king_hor.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_the_lich_king_hor.cpp index 4d29acb..40ebd3c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_the_lich_king_hor.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/boss_the_lich_king_hor.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index 076b993..92c3d54 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -179,14 +179,14 @@ class jaina_or_sylvana_intro_HOR : public CreatureScript switch(pCreature->GetEntry()) { case NPC_JAINA: - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Can you remove the sword?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Pouvez-vous détruire l'épée ?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); if(pPlayer->GetQuestStatus(24500) == QUEST_STATUS_COMPLETE) - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Lets Fight!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Luttons contre!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); break; case NPC_SYLVANA: - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I think I hear Arthas coming. Whatever you're going to do, do it quickly.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Je crois entendre Arthas arriver. Tout ce que vous comptez faire, faites le rapidement.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); if(pPlayer->GetQuestStatus(24802) == QUEST_STATUS_COMPLETE) - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Lets Fight!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Luttons contre!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); break; } @@ -640,7 +640,7 @@ class jaina_or_sylvana_extro_HOR : public CreatureScript if(pCreature->isQuestGiver()) pPlayer->PrepareQuestMenu( pCreature->GetGUID()); - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Lets go together!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Allons-y ensemble !", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); return true; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/halls_of_reflection.h b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/halls_of_reflection.h index 477728b..8b2783a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/halls_of_reflection.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/halls_of_reflection.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp index 368f1e5..c113ac4 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp index 1e9d133..a89eed7 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_krickandick.cpp index 6628768..d3615ca 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_krickandick.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_krickandick.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp index dd75bbb..08241ee 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp index 8ed0fb6..3fe9e2a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/pit_of_saron.cpp index a3644f4..a09a539 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/pit_of_saron.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/pit_of_saron.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/pit_of_saron.h b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/pit_of_saron.h index 2fe3922..3d02f2d 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/pit_of_saron.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/FrozenHalls/PitOfSaron/pit_of_saron.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_blood_prince_council.cpp index 4ce95d5..f0542e3 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_blood_prince_council.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index a825641..14e12fc 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 0178163..05fcaa4 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -787,7 +787,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript if((!player->GetGroup() || !player->GetGroup()->IsLeader(player->GetGUID())) && !player->isGameMaster()) { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I am not Raid Leader...", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Je ne suis pas le chef du raid...", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); return true; } @@ -795,7 +795,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript InstanceScript* instance = creature->GetInstanceScript(); if(instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE) { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "We are ready to go, High Overlord. The Lich King must fall!", 631, -ACTION_START_EVENT); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Nous sommes prêts à y aller, High Overlord. Le Roi liche doit tomber!", 631, -ACTION_START_EVENT); player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); } @@ -808,7 +808,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript player->CLOSE_GOSSIP_MENU(); if(action == GOSSIP_ACTION_INFO_DEF+2) - creature->MonsterSay("I will wait Raid Leader", LANG_UNIVERSAL, player->GetGUID()); + creature->MonsterSay("Je vais attendre le chef du raid", LANG_UNIVERSAL, player->GetGUID()); if(action == -ACTION_START_EVENT) creature->AI()->DoAction(ACTION_START_EVENT); @@ -943,7 +943,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript InstanceScript* pInstance = pCreature->GetInstanceScript(); if(pInstance && pInstance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE) { - pPlayer->ADD_GOSSIP_ITEM(0, "Let it begin...", 631, -ACTION_START_EVENT + 1); + pPlayer->ADD_GOSSIP_ITEM(0, "Nous sommes prêt !", 631, -ACTION_START_EVENT + 1); pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID()); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_festergut.cpp index 091e8dc..d57bb0c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_festergut.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_gunship_battle.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9e095975ad1f2c132fe026bcadd0814ea32b7f7f GIT binary patch literal 145710 zcmeIb+jbkbvM!w4ou_DLkCD)dMDr+8O5!yrsU>lm6tzgop3V&iEw(I9^R#%dt(iIZ zv;MbhzrugBzrvv#=tiTP2iZ=RI1)>0q6>vWp-@#QRK3{y-q~|br?ZFo@csSL$(%lS z3b|a>Ilzy6-s#SVli~8g`SpIeoE^V-@#)j2?2%tfg429h z-aFUx=|8;Nr4Q=eaQSX^`@vf>Aj^BNw^&VHjM4OfKy$F)0lV62c|V;yXyFhR3!tID zTVM1)c*BnZ4YjkM7S3Y2n%{cPaN)e`FT8;>oiIppU=l0dY~Oj9uAJNc#JL+z2Go!S zHX2SoILj&i>@OX!zZi}loZ-Z$jZeKrRv#()>^rmh@MC}JIk(gCcty0#63Fh=0ewy@dhs*xJ8)ff* zP`+*UXU+bk|K6MH&%5*fWHFo0m-^$^-u>`)A7VS=I-EPC}xv$+Tt>JG@L2K8nUAVooy6XcHzx?JD zwRY{+=__-)lGd*Fcem4P*UuZF#=kjbt=(DcD$*x){hK2QB*t-Gt2e^9@phH{fK;8C zHyTMwb*|k;qjz%CzN%kc^sejO)5~5>gYlbF$rpzl4{Kf#R5UfOwE(+D6U7I9cyxG}+y9=i5pVydb#rw_gY9(N^;a&~t#{QF zLjXaK4$Fc$Vw+zE%`1g+1>os*bMr!3g^uQj8fn7Fpm_*7kWs*Q-G+PJYIl3D>z$jL zKG{INR4NIM5VUF3&fHG7)s`5GancVyR>9!m<~`8n;=*kQ?Rj%d6vO7l3+J>ynM@}N zZkH|=?^(N6zY5-xztP(zol>pWZkt|_P1K*Pd9||dpdZNW_mDr3>BP6r{|2CH)qwz+ zKRCH;p$z$3Cs8y5bs*1W3mcH8~i z4dgo}uodA?4jsrSwCdb6o5UY{Yrr0Ib%t$(%SP5dudVx-=4>3ixxybl)y}*-Z!+-a zO223BYj9+(YZCYb=qRTRt9uD)=C)58wd;Vm;y2d(P?Ovp*1A_~H(Scu=IycTRH`}b z6!a%wB>dmDd){zQ!>fcNql~Ka;o;rfgHkqkUPF%>-u9PMb!0V=A0nmG>wpUzX97vt zH%3;_`aW%4oq|zm$wg+2^m1Ur)d~%p2z*#n2<&tCNq@NQRXn?YzjoVo7wi@q7VEc? z&sQ}$_1f)XBZvqQ);s8y&mU>(3{W#JW@^uyYoo$`4Q#Ofdu_MVYP?nz6h`Kfwn~i6 zg$e=ag>o^Wd7z;1<{Fbnp$7^IZ!U$Vx);BX8W-bcUODqX#vZ z5ij%)I>_Y@wVknZ*=mL5kbH|b$D)&q+~>jelnhQUj7}5gOMmWkrlY}7<3m#4U5NU2 zx87*D?YF&Vt&N?Sb%b8>#fpYhq`A!X@1#ip9uo+<{Gy}n%5eQdJVh^ zbZE$j`YHu4H(H&j#3bYy^s1sebnb^U2P6s>>`#_e`v2zY}%2~~r3&ESbA5J`&*Ka)M{S?N$GxogY zaPpJ$38p;k^#%TT*mp+#!QvUCsj<&OQlFP#OXjwiIuGDnI3aA{ib>$!kQW163i(q$ zP3M3OKLxoq{=>PL_upXi>TFS?eF%1IrOx>U!W%1z*BP7{*3d+9nCH&-1C+`}Zer_)c^cHu!8 zOy6U+-+InFc!UOv;Q*TT$~G6=Y%%ZFm`lb{-FuK9|G_9B=hGZ+D%vOaodJ5i%Q`1m zM(7#jga76erfdk)=bcCHoLkcD;VA;6&8H9i?FAMxH*So~R!ti070|$RaU}l3sXK$! zWYR~s_r!hR6Y_=O7r2}DoiVh0Z@$kgtGZYN3v%8OS__ZH!Pi1<4hDl03qCbsVHzv! z5w=#qiRkZB|KXW)UTU>`(si8JFbhh!_)z^=c<@d$^z_yAMy`grhL%ui)z> zLlPDZErUy_QQk8+qxI@1c$1vgMXmkJH-7eEX?;L% zfV^5pc}^fL(3ZPWs+YKwu#c3lY_XW1VLKaR_Z?2&JN?;gKJCLi#P4F|4={Co=sPl`=8U)U&~vB`rHcGhvAsFPtE2R>11G-)RxUin8KPESyunExkY{n7N3GlVe; zYhFy>;sc~CmIG!`PA0scB$6jn@aBS~^umF2HFmUIw%A8Y&Q`YgK1_fCTd5NCVmh6G z30m!+UbS0S`wrC5`enUArW*uMQ)A!O4S6CZ>A(ug&Jg-em<^omL*L20QvFh{i3mjg zg#jG@f?$1zP4vZ!^U;IyGIN*q&Kqy}zWm}vbGWz_i$iJlrq+1XYqm~0>QICgOdhJ5 zw&R|+UH5ml$DJ<7g-4EYZ@<{+2vKWMmT8YtCQpnef}1%iH{%`KKr=f76{fm2&7Xg3=ujE(&Wet^z@ z-qg-|wN9rFtM^P_u*MdO;nDHnhJ=M4*F(pJZ{y6`g}I5gmd#D1gdlp-=@9m@!19ID zl+IiNc2O)}m1@GmRUa`cR((+GLYL=fD*lbZ=VO09oI*n&AL?^u20GWZH&>7W7n%fs z^kC0x@_>kZwrZ!c0Ux02ww3dpuJ_qLSX0gNkc+nVwx=>OAfDcU)A{CrBe>rj#ZvSq zwm$hdg@=!gpkoD*j{~7QJpn`GTAOtKS$$Y5U)*+RYqwKuT8T?(Yvo71xH}P#Qf$+-DT!ljSURV zVd{L(S}KH6d)K*{wNx0|#8Un`)fn1u8Dc4hv&PUg`PiM=*@@c@u>hQs!Ppt|F^@8~ zX&ip3427{P3{5S?c_WK7(VA)u&FN!eCN_4Jp?OmiGx4U}`MEJa5qDqKFD`p@oZo;a zyVt4Rw9jie$GvL#VG0`C_(WD#xO@pXakK*ZHE-HASb8{_YhC^Bp1834RM4!s!jvZH z0tACCL@l|CucwP4MGdj2fu+L^1>fLM5YKt6$sY%$VmVtX9Nq0BFs@R`mdl6qYyK#k z&zGwBwUn(KR`Q33cYtRBM-er@IRvhfE#(-vV(BQGD}=!1v!!Y=U&s--@8REDA#!fa zjwzb``G-YgdMg5^R>R4%Sb&>u-lq|qcyJ7QZSQXG!4)`p{|j5qK0>1@&SKH*7ZwEc zJuLp!gvCqofHxr}a4vQ`M3fkXj9siIz<# zw+0?AfVBFjbKx!dw~P7&P8tN0Ei(AW*+Wp-?70|<_6A1G5&UiSwiK z`)>|GI(Qj$lzGnI9o}W01r4*qg*%=tA2QFm?oH5Xn1qcA{P>vl*&D)7NT=7%5YwiB zdFR3Tk1p{1nf3)v@#*o;KM#Wrs1u;UU*B_PTo(W43=dwy4cdV(>DE&bqW1LR4Hwzj zYH{Ct2S;#*KM^CFd&|{)B3off!N`0voQ^kw0@%iWFdg$};OQ}&nv6!~A4MN>4uGb3 zlJ&xL68+H`3MZ`!>G(Jx)e^LlP$Z$)JTk874?dFTF*985JK$Q-E4S}AUkv{VQXJ%; z>toy-E)&M5@fB#Cz*oR9V3puq_8K3Y7_E(xl6DL=m<6<$NQxj@rtj2dBLqIo9dCq% z`*AqNku$vF-h>|9j_5D%`;XJ%z`2OysGl|wa?(oc?^pO zFVf4L1ZVwa-&s;TDgDN0fxe{=hI+CZjs~ZQD_MHH{RyPmhx6&2cbECme--S+p9v=7 zAROln9e2^WBtmaz>_?~**>{%p#am{61fu-2$CeMA^FP%z6w_eobjaNEpO_yQ@rkv zR$k_!)^uAZe?u%!@9gbWtyw?acXFTexoR<&%jY1!$jJ4;tZ-N?Cd0cs?knPe&PUV! zG6LtihAg>~#>B>XzJ^Wki{2lDd2{n6-wsijWFXx$jBiLQIpb`QA^TvieoiWy8!PV^ac;U?vFmyntmUP^>dXEFmd#nLE z7o#(;0Z!}?3XV7#+5G^n!IT$91PNs_mczNk%&frq)33opCn?EOkM4t9w*aU(;KuXR_=Aa1GEMG0< z3VE)m6|?11wOlQcf>tVLE9GLbS|OI?@A7}W5lp4^u=y<&HsxwDdsHeM7Ak~IAz#QA z4@-#K!(ZiMDSKEcR;x#0Y*^%6fS@ERw?ld|ZuCpjwOYznE7ekkG}b%4+%UULEEd&fQ8<$pA z2%7#UDeTSyrvr%T=ntk8uYlV=2=RdZ^^g9X-P*w$ka-+#m^1=6{w3FeG}3Vegzh%o zOztQOa`3=4F1o?HPQ@I=O6@*`r>x9fH)t!%_z7a{swvzezhtfMuJBKNLBa zB;?tI5Q#KPhS8)8gNbM$4H3TK%cq=@%w%P{Hy`6+$?1CiaUIG!-^G>DLc<7a$j}Q^ z3sV@iKaK=&lTIFN1Ec`RmL?na4}WYlzVv2*4>PR&`(H$re(HffdY|+JSn|=p0OP-4 zR4^xEi~xFtK2bpQ6u^8Xd$>6B`Y^1WAAfY7`A;wVi}O+cedfARdkfdwd82mG*>}{x zdKZ^C{ZV*@0IMG#R@+;w=A^}Qyfdoms=h$K12cW%9q0qnT^rR<TZV#zvg4!;2JCE4$lsCbL^~0pEkLc4@piucA2`F^MD8Vqyj0)4MqFHP}lyOrl)D z-aG9tmh2u4f!UXLEwrFpgon*np4fK?gMiv_GA-x7u$3=t%QwRr>?V@k-@ltqN6y)l zo-kpaiqxF>8KJ}eFXlA>CCP0fiH+^pMC@=AGpT(^F`|hiD)XVx7{$nZp+>R*&9M6M zQXvQb0%Ho^(ZS35;tgW2hm$inp}7l< zln6LA$Pp1;gTx*5@nz%{v_C~Ui+PpZ{yp;?z5_nj^4VL%GeYlYr;I-R<}FgTVBA6w z!qXctI`3ay)bu1+;+jCk9>rWnEP6+}B-kSs{-v#OY%9J9h4&Egql{mrK9!)sEYP_5 z9xLr;(wO!KJ|yxY6PGXZVho853uwreFI`$g5Dy=8K2b;@17wuW%!}eu7*4h`Vgy zw$7L98WF%00IVL}!m&`v7LM4#;Xx@|%vFy{&f8BlF!; z8NSFOcQ?UgfgiF;;;UGMuZgBPpRE)N#r%%vHjfMg6*jZbIt~j+CP96|*;T>+&RjG~Yi#WFHVuwfQ= zJ)c;j@XgcMXyq1;adm>YE*ovb7)Xf zp*eWjoz{hpMmpegVe@?E$~SC5vVC!S7z-?3rAaO7 znqwLr+wdTjzW@RS#6Llcp$!P$D;%(}wFLx@aB3u0)Xpgo#JodvAY!V-HOT{DP{~)J zSg<)bEEP+f1f`<_Vzn%L{@P5SU_hsPpa7F&K!DN*QLiLa3Po(a!~}^5{F`0G3iBoV z+v?8h;kzldzvMz~>% zHA+`?i%k@6+aLhNa0kNGBv{4ybNDNA9VuR)b(}t-vv_$h)I*2^Hh~R&J}F#2K@>Hq z(pakHLu7Hn#sib^uvjb{lJf`F3r^?Re#Cq~2}W>=ZVh4C7$$U|ys*Kc?Mf4zdSAl? zPtp5j{qh30iLblJHrM;xO$TY&;D2c&i(|J7?YaQ7R2bxNK_C$jv&XSN7uK-HQ=yR% z`A)Nd!@O#aD+u@%ei@n%%nh^gpg$kg)! zR3wByS(WlM12%RItqUv4Q_16;bz5Q^`#ykEvv^c3(#j*J zCRQ5_JO>GS#I0G_dsa1c<6%?R2y3d4k#_*rFXK*v=)24q4?$-~gvFLjW*m1ZPdr_r z4oh%0R!ezi4WLU*Jv{}d7vO{3wsYMF^~D5@-t89?EPA)lMq%hOmmi<}N=q^}B@8icGCc5FbEJRmeK)*dECgUDazgdm4FLK1lx4W1X%x%k%Z@}NwL z4)^dKVSf=0KJ0i9f6T#$+1|1616|>1VQx%pI){e^`jw`#q`CLP%B}o6%|@e7CAbt0 z;wo2S;KeM0f6ygdT{&#$!q>LrL4NrztJ(4q^8WHs;tz7;5n-V=93ADEM}F5+iO6Kc zP!|dI0jODphOqB2U)m8I)%bnq%u|MM7#ccp40e!GHFre6VyQwRh=Y_Jvn#w}xeC@L zy20^65h@A$9fCKPD@s46f(!R zCXqpja!no3`2ihwk;b=?RYAfajUb5h3}1T=ys~-EL70maNb=`4&dxs<5y`)}l~K6) z^x>eiw2e8sdC!l-I8k;o_;!pTLF~Fj^xVqqRo|Uw$iJnr?^GbBHi!gD!Rvvo1_|-x z75buHp@8X6_t!A$p1cDv2A;eFQmv3b)2KVT-E;8d z9eDB%NcKsmFNYZD$vg1m9S{t(zW90a4u}JUC+~oA*DV_LuV`LWP0mFQ{4ePuFn9mO zOk8vK@Zf(LJ2$5LZH-+L8fhek(!I!Ah^jHDQHTo=2i5Fh9zHg5cOeL#1uT>IJq-EGLsu`(DUXq*PKacgu(J zr`d{^->ym7U{%4{|7HAc%De`>e>u0Gx%;Ozy_M&axNl?5qw|679IqR6|JM{LyC4K4 z>Ng-46moi7-no` z&SM2*NT!E!_BKixhTOIyYfIp4p|nQf)M7z9J-ds&tvMl!7Vl>5%V0v-J5+TPJ*Xz? ziUaXpd-p@6-Q06NdSpn-L5s()hD%dwd}4dFr`*5DuI|-FBi{&OIYQ}s^~0dPLhV#a zv=%aF0;Uaq(^9K3TCK%og;Y#tZ1wm|rp}LjCO2b8ea>kX;;5fU?@-dHXjO)9A(uUk z(9a-tIvt~YEJ-(+yGo?yGnJ0Ir7Furo!%Ig5C+3Z@4YCuaqP@iC^LNPNYTPGhKouW z{JS8XwgCdNF&u|p&ir6#_rr7N59Ay3#Q{qj*qU4*8TW8@i5kVzAf+eE$+ho8MUqd6 zT`=YP5|{ZRWWMv6e1L`Szs%&h{DQZXv?J2e2Vx?4m9hZJ=ImX{3(J#+vr0|40a(96 z@+Xu=XDKOU;A(&*fz%Ndon)Tzd}Ivl#eBNLEV8ug(Z`f*u7RYa-dt47;P2ej&mgZv zqEbdMN>@nP?VHH;h{lF=Ur|&D9oc2=?5uauLjB3>UcKu!GxB$ojzn$H8g4oM@Hfwy zpltUFiQQ+Yvy2*0$N_nWqAR$=#@SuJEUPEO7}_2em|g zXikR?N<55_Ir(-vp7q~Pkall@ME7HQG@JilR2~t_G3#LKz?TOP&p;!VjTHxFGP|AZ zjDE@vBZHS;AU`2rHB@%7KFIj|jiiD8?<$i-2@y+#Ku{7YdO}NjLLY@l+9Ku^Owz1k zKXvnqJtR{FXYal6AN5(8pkN8^QS{*lFKrkhkSmR>I5IzV>QzKSGl=HP$h^)%gHK_~{Qq1-rGPLAA_Oaej ztsSI7$@9>n12>`U;6?A|3N`859n{|SIfxiVE(NVS4MWC;+SfYCL%7xIl#u6aicI2^ zW6~cORhwo7hz)C685&okSTcx1ewcn2|k$G^~WG!kwa=m0>fg)v;-b zjgPaEH>lNpBIpD#zOSg_w^S+y>B?y%41i_)$Gor@;U+&l$+mtYwp?}Q4h!%1slCr`omp8R|Bkxf#@-L0$I} zq`Co{RTLb^$R2g92|QuRt0M(y{>aJ*=xswI zWJQorD}fh)a!|etNug!NT5Sw$nVWi12PWznv3^rgC1m~Zchr=*>PliFL(YMLKOtU( za=S3)&?Pd-4>NT`oyVA7eEVHQvVhCyAUxJA&*yEHQPe4LoNdvBSJnK2sPoS_rV3omon zb=>wv?W*gNfsyJ32x-zK%yiUrM~yj&K4z7Xz6tR><78ir;FUZW<2qdQ>zzkevaA(l zYE9im-=L?g%28Bj2`pS{q<+LsBPABkf6eQ&hbke%r3h6@7L`$9$loonnC1jU=q<#4 zc~c-Egs^{9Hby7}3ws>W{_O}c>{YmvyCYz<^#az0bPo-aw$Po?tU}edc7<6Lz>r|b zHq1~#FUfWEQ)PQm@0angneWX@hu}n1$Fog5A_PhOSk}dx`n3z^gM0c43pz*&bjx!iOS%Y zwPq9E6p2DC4KP8opmTCysie?ls>GXq#!oqGB^1Ai9$&j)MuAzCSK&JWR?H%(Lyso^ zB~?+#=s5loJ2(bVYixk!kKQsCfp8NWIESwqanDV z$CIJLJ#_lYGGy}CW;!t0<$+7@b^Wy4YQMF-1Mkz^uW}qCbb?`TBXxp+gFr6gEXz>m zkV*#mmQF*Fw)Hna>4M_+OnazMT9YBlE-bkbi$Y;bZcU z&|>0VksYkeCQf>LxMrBRI!%~#u4`|ua2QR8#fJ%6Zc0f(dzBrZpMMTJ-s87PFm$*v z9UsbP%xxd9e9-h;#5fLa*!Y!P<2xb(^0#+-bXzcy63XF%oeD}rMge);vGwSETwTNx zY|I9_9%^)I_Q(DAUbp|jn=sezp7UZ4r?>F*st4UaIs?{DAJ!icWe$wt>j=!xo8WR` zF|HJCC4BamUVpT_zrMve8A=(Ve8`=ncS*bx?G_I?eh{gKvm%W9J9<(5tc$5sD;^zL zAi1_Zmpsi>j(ZGMt3JUo##o+4Egxpk>cr91jB0)3XiA&ZD6K&_dd)%D<#h`lNgOM7 z>oCi^Z?9ebT}f_v-l_qnF9Aw)ih0YMUnW|dd5c;9)1(F4Y{8B-GX~$aiMe^jZv1U_uWNib;_uIVF+5HVfo|zj{Z_V81OUB;;A-IjGV~W>CYt@v;=yz01^M)yJ*R@RU8-=7a|rwGzm%n;FrfBRzxQBm2*JW=P|973l@q8P4`Bm~yFk6oRCNqXJOcIypyR~e{8K=kFypG0~TJ#qSF z7!QX+dFaJY_d|r-$o0+Msnfx=c-#H#-L96N%dD={j3-a81UP-|P_OifCq1)R!X{q4 zVno1<<%UsY_?HM-sI~lnOVrZNfkkT=seDKN6ab}Vrdd;Q}uZNF+a%e|H^M5GQXrKO#$x^Um6Gs+PJS34rem2IZ zxEVgC*dvJx{nV)Xs4gDrZR63GHXD60K{#xTPuY$SGh#;%o%`V|lbTi4mmYm4;`rAT zJVY}mKO0l*&`z;9e98$kXo#vpUC!!J!fWxORy|x!0J1SHDt206%TkU>I{nrBu0MH? z4SS1IVDr@`CBXqA@vZx4{8lbmVw z`nEG*cI8Ap2HuhZE$Z4ytJda=gvL3pvv(_=LaB{l=MvXUL zSjR^F1^Wa$gtynMm*?FF$jo7^9)@C8qIwuE5>+UL0Ol)#Dhm7!6pi=YK{-l)L)lhglvv}^nvAN*$Y;Js(QUZ2*&#rpb3+kcqBY#I(O=xh1eKrraYB(6q|$gjUS%H5%D z=Uro6X!0MS9&O6GVmP~GTq16|tyAEx@~?Qb4g1Q;-GsFYbO-{UzdBpVwiWgG^UrLm zlN;N`lKtEC{2Gqiu`{Y-b6}^%Mdp#W^lG>FL(q^;xH7?Aw|cXOgQ*$Dhb%P%;7TG*LJJsWne)*L7q)Ali4jV1|5-UGa}RFO<#C z^SMh(31Db{i7V^}<)d7dg1HK;Y%yvTQ~AFa5gO>#Mn$CSQK#q+C7fN7| z6bi`9m?OiiTs+Dq8k8HeM1rR~5o^Tw9hA#ZV^|?$4Qb@hPM}G8tnG1jG*w-1y2oeI>2~XUwrm$I;ooxmJBsQAWr&N+W+;`TQ&Ge)S!o2Ks@~yWk_YI2* z>#;WzCoP~s3RjJ4vjj!Cwy#b_Gn1Yqk=UW`92oT$GugtjhKK-k!oM$?Rxo@NA=&nrq##5p`DV6l@K*(s0gB<=f7F+xR;?Fwup zbM5-_O^fbaL&ot^7w%Qc9e|dTj7TNn_SKe>Qlew)`nWV7^x0IdskrQ-2+odh*-7n? z9pSQ*>dDEHUS-Y0uO;ObcGyV;ksVFJ(=t&sQe}?*a?4~l{IZj}OZF9O-Q}XMn!|se z36uVGHJ`&-*P+Pc%;`-V$99M$#{qzgtqpf9VPwY6ST?+bBRypBfqU7IJizS5MK#=hR@}_(9Br3uL zQ}zzZ#Yp%;X!%dWj85It=WI$b#qQ_XXv#9TElqnIz$;_}*n|srzDrsYhSXh@0q7~< zOF;(FDzkNO6`p!=g6xIu8se{dC+*hN@9v35*I~s%f zp#UQq)LKMiw-oh>CYWg`CgWr=?^{Ilf@J2nS}WCL-*IG%$%Ub-a-oF~t03({cX`|` z-nfIUv&&EC@8`quxIf=wllNgH?(u%h6kELCb{9Lm0?c3gPaAxE(0SVZCLy|9fO*>B zMare84W8{=>+V&5$qhbsr+V7p>AFzd1|O>zsT$E=Z-ZAiu=xG`#h&wOKK<##d^&Mz zpS|V%eEJEu=mnOyw$Tu*U^mni zd`0}v=L?{;6y6-}LU;?NqmLAk9mF0w{CdS1lG(WJ8Zspyw4v2_?IQlHch!_JqtUMm zW$V{?`_lgQWiw>T(qbP-R4unPNC6Rb!%%i#O7+uo2tp;O_z>VjGhm*uhh07c z6Y>F5&LrHcib-7!wSp)QhXMRUbGXIncsNpSk0ncTn;?ILNQ4nwJMMq2hBFGg?Tn_& z1$XW2JMMqppf1xDf+jC<_W|RIJSbHPho)PLu@``1`zjqB9w7`c(nIJ$h=D@89?$Qd zG8NK`J)UeR*@d>L@)nn)|f=P}K>d-^K2nkOv9fsGA}#HAS<25j3-? z#M`mEqr684)?%5R+;&s|6J+}MvQ)baES0~@n|7lIFoxAkFH2W-EGC8kiA_=IT((+q znO#*nrc*Bd&2d*>Jm3>xV2E!#W0j&xMxz2~n&iiyYdO8jn=vyiU$sV7X!)Fk{%OaA z7-n-tULr+5BV&r!#?{x-kB6zf+l?k2N|BMUp0}Hqfp^zmjh1%wEws>eCnBK!B&4H? zn2oSf_KPNBMI&YDg_hjr2RJM`BTypsehGX1{N5Oy^0+5FcK<}YD<}x)Sm1KChuhT~ zcz5Khv9281z~Z-&O-xQ2Yjj5NVuBk6ySX2#5!9{lpZ(e5Fm@DGfzYtDB_A!$0lJBY z82ytDH@gkOC0IQ$!3?zoX%%fJy%XP#al?eA$~WxGvdn<8l*zd#KD39X!+0gTI za?`$|R5ZAydWxH-f%AquK$Q(U| zvf^P7&FYIwZ$2H~#)YHU$iA`jDzwEto*PCe(V_g(e=2Xv7puf5vbXduZxDy8X%{4) z=p%wBg#?Q<5no4rOs47nHVte(&fs6M%yw*Fr?X|haSO@c_UwvqurqDDX$P|sACH;3 z)|C#~!3!B=>B%y%e=-$7qv5NheyIs1hpjFz6XLy-a_@Dy}}wD>fs>TIQ$ zR6A!_G@Uo73da%$cDn8QD;#Xa9IvVPSiqe$YG=6cf@)w`yeU#eB@9hT{HZzA+2VR>8jf)G5pglU7>cUU#^1lZ}9 zt+MUdCnK_K*_&*?NhN1?U%|PqxR}#;(s4~TdG`)5N!*T<(Zm{EN8ULp#co!&+6< zL&SMA%8sJ~^x9DvAEIn6t8R)EJfD(9Z+_iW^4r5Zc+m zU(Fl1ghkl~yW3_r{$L@Y>|IG>rSZ-_xq~IOl%MH2?8zOxgwiEX8q)b*E!2%J{E&i8 zlawyWnKGU1*C%(D!H<*1ttFF)jQj7s4P094>#^=EwUNb@r8YCUv9$DCz86xLyp!2& zPluD>&C-DSKCI_|=1@|0ZL)Xbji#S|M+6*>KgEqvc%x%(P=?ka_X137sA)c(WKd0^ zSm3$m9E6qPk-kCcGeFBx#-Ny5)A!Lg=&7=`pSNB2cNZlpuC7{F@mqVu{@nOh9raHi zGiLldjB7bKJ|3Zj-LHNQsh2=|GMP>mwO@Rel+D$j2wIfyGys5V=dp9)`s89h9AqRA zN&$vC2G^%O+`N;iFNh8;6!XB*32sX!98}y*=T63i=<)FoiPQQ^d_P>y!4^txM zaDqgV>^ZJ&`ClMu89n~_XS|@#xjHoZ-A*@Zfw_9^-4Aa^-k$T(yGQ?-Jp#)jw8b~C zhRe8UO#-2Q0K)fijz-u0#loAsM=d7c`~CltAM1<|G@(OrO!oP;@DsPudei&eZMXKf zs@E0W?Iiy4B9!hsN#Na>yNnX1eF9AUAgB3q7mSNQUxjfQu8+&LmvLNsnf=Ri?N?yi z7_Cm{anmmHt=^UHwoRo_pFTn45B5hllK9yhTiZ~;0 zQU=L{=`+utI&r48{69IeeaD<;=4W)`gthnBo8B~AW-#;(EejrQ?5}KAa|_An6xG_I zONQ}CVMS2C^byyk!w~!{)4WyiZ&a8VLln(}4MKXj`qsIuok4%2L@igi6KgCar+29T zMQ90cLTCWLXzJvjIPxWAAji82kW%boHCZ5QuXD<*94B)*oew+|>8y=L56|`FViGJj zAGUBNZ~%$!1l}x#LxDFmxfHB-Q1$U(G0AP*oIF&$iR%18+hM@rj>Al9k%e3PBFfcq zM{19ru`^goBH7oai#nrc$N>i9(_jmkhR70ZUBZszr)MwrVAaFy+aP?E_q zmCCSkUF4+I>Dcl$OVS*?JoEY^PP)uYMQmRZ>lbZF&}c%`7XyqXnPPEnMlUAUc16F%ajyl1dp9AOkDHZVL?ZbKQI83qt+Y2HJVGyO@FZp;%PuX&35XJwcJk1Dn0W#m z%F5Szr>(1QyVdBub}#EFgA${i5STPEd69hh%qSj*t)1IVCtvl^W4uN^;wr zQL>Hv8Pzt{P<8?eCPpMiMlTVNKXpVDj(Oai7Li>wUi}EtSd3ALwmXBUlwApPmwZnlgxr z!&`Yl;af@cX}MO>Zk@iuRbW($mPk|jQ2zjnr4gk(68S zKU`{ZnOJr!jZG)~4pTL9>IeT~9!LOh7nu890FVFnmx#=LiXYl({19=55+v}a&b6nE zBiQKTBOPeySZF-yQ6z^(n$)GfI!U0yAG3s2TZvT;Z$Q*vA+NLZfw*p)k}>g6;jq=X zS?-Qx^axdwLZ|RHF+Yb6stXM}S(rZ$}iEguM5A?f?FQDFx6Q($E^b+jWiQ6#j z`7b_sm0Z43+|lIOr}lAlumgP`gw!% z6z%<3&xY12?8{(R-dd9jByu0lF5$nQ`g_ofZ$|r$V!_B?16P^8`eCm%`w#CtXL&zd zIK#!{r=|05H2mj3N5c=E^KP|t>J*lQr+352!0AsO_!)sSoZuDDIXgLBXd4-}C4mPM zb@in;X0>=TrK3Wny3cb`GTR~-;3Rq3e-ov-dKYlbqQ(QNRx~pZ#y_-H{o!KY`G@B$ zR={=f|IeNOT6xZ>?=1fNb~PU^|J(5vOW2mnx#xgQr|ePx9eh+PFN+YJ$;A8T!FW1! zRue#3&ic0>vOhrB7m?H|A98K_m~`ALAC;zib)$`r&qCMxyhORwfPwZM|93_N9@7%) z!I;8MF*>w~=9#&InMQ$DI^mGBtJEZx#~#j$Jp|wl_(6|2J`G2I>Z~whKo4GWF6#D2 zA5KSz;=>j`^7`|pH(9Y*J~>zPQ@(QAXmwmUVT?+l!GbGz=X6Sx*C$@bg1~|)J08vG z1H?G-<>G$28V!gG@B6cvH^~a7T`iC(ezC}E97qtvfWa0%10udrqKhrqf2{N6FA+$< zT!Zp5fPKNE`IrU`6^pIM*WNAF?1`zOU3JEb_X@>M`;!jhRJ|+j69LIwA#r2x zq;`SGSo*EgXu&5$;PxG{&ch3ea3GbH!2Tv`skrTSuk}jj25M)fCUv}rh*)o|Af{oZ zAz)G7B#o&CupAM=W$EqcJt?N5bdM?oYaABX`C;-CIAVtXy)h8H^{D2JGa6$1$D!P0 z;Ve-`3`UAGo37^07=H*EwqvfL36P%<55|b+*xX;To{2&Z7DuEu^u0K%6RtG~W*)2Iv%+Ct0D`Xi01ONt>tt zDoi&25BBc*@yI%sqKC{g$^Vdp7xU=~g*2Rh{mU^t#<~8Y;q|eLWYl+9i01R>tV)o4 zK3rV%$EeUjQqB}I9z})Fk#C3hd%5@H{E-5OAY6XIoE?%QO+imxnEKEW?6NQ}XSLZDxs679<5F$NcLm!DzWZ%b2wVOsa*yTDML}aGg z>N#XzV3UN==baja)*3yMxP+-g+E5dEjJJe|y+G{7c-DVEfjy0#ayq6*v-$spD3)t5 zOTj_-_TYhJ1=n|SIg^BzJw`?^zaW-js^?}(4~@zwMd%A%wwiZ0g-TysL6R#|CP*5J zwY=scm!!OAa%OuyD=a|*MJtx|wO5GrijWeTN~iyjp*8mrO1Fc+5p0#%h{CH5?9@R0 zwcgED{k7Zf)EW^5hG{Qaf4VM6e5idL6%-0`p#VyMQ6oqJNiK0RWmwh9>pa#WIH{*= zJ?D+u1@h@*1l^weTP*SrFe88Ji#cerz!$emhYp9sdy(m&*&6p21(0y0tVX`=Yt*I5 z_75Wb!)D{wWSbUc84|=bV(BpZe*dgn`#}hF#nd&c2ov=~-nR8}Jkc8qB$wh#D3h-m zg`{x%h}glXBp>%@5DCK9$8z6C+xQh^gO*)XkzC9W2@%!`XiRM$T`@l!dQ5%CYq=;? zRGD4aTXa@qsE!guP)rmKvodsd><%HOr_OJuE2yHz9wlB;hy@0Y{xv`(M5C`z_pwO0 zRE$#|q{kE)HL)cr`OVd0c-x(FiMz-M>u^j@>x1V!_)%LXQ6cnZIv)+L;WEIcJ3#nd zrqk@8q(Yck;g=y_1`u0L zo&IPf^akB8!0@{O|gV4B$ z%^(_t4!Xz=7w&krMAcAT3Q;rqusfBZ&X127`aM{3>ZMA7OXPN%d=A2=xKat+IOb69 z+2AlXT$W^2*E%rBZoN2EIl_T52O4zXv!Hvt2<8lCB$GVbOyhwmUaRvIFf62((_EfF zrJFX4Mmcqfo*ya45i$iiSqN$0;dx-pGpA{P+L|LmnUy~JCdBxRo&AdxU+O|MKkSTZ z9hPH4%NaqPVk>(*P?lVfh@~;C3K~57q=nQYSX%&NdKA>6x5>H3Q=)`TpvdaXMCG0w zoGiL11w51XqSmrXC)%gB7@G25+R+!#ghnhHk*Jqg#^jiWpDMhGgBQn79XMasVwZWi! zk7U0~g@U{uNg^P>OI*SWps18j2T0*Xm=-qMWnVK~EG$VBvn;XBO|uCv*mbMjCG(nU zI9Rs{0@p^Wky~Uq4@?T*-bkWU^wraQ@AkvZyLI)ud*asGXK`m2gk{L#!yd_hj9zv5CHqPIZgvNp*Xj-1Fl~}JFyOV$Q~`a~ zx^iO#GrfcL{bhvA=Ay!%I<9}Z6K3FfbGjjxaj#BMf}{)o>3O@>bbD>L*?LWWPIa-^ z$Qwh#C~f>Txt;Wl*#y2cdHm7XX%oLa#tHEFTZTT1Y7?3um56<9C@Qe{^+OiD)tYeg zXCZC}ajxizD6H!mDn4069632N9hk~o*?nC_(?;Elwj)nOdH>QIhdLA+b6ED(uOfR)raG-B?#ZwUjkL>CCQV6Rq9$ZI*R?lS zI0dFtS}Odq6O?Gjqw6*nlz#qMdc~zL-m*15 zkP@}OyPaOUe%?qVhk7hwCxzOQ$l#w7Y)=9oT^9jrTaZCthDNt!Bqza(J$dz>(k`r> zm%!H-(u9G?Tm?$~-bnGA$DjE<=ozo|h zQKnn#blqO-ym!)Qwa#MnkAHvvoyNZ$79$F0274*JczO_3ne`&~@6bY#9nsHtDDqD^r@>ZVpE{sW|(Mao_0)pxycT85y0zbp07`2z;;HY@0Vw&`EoW_%;gX7 z_ML-D7LFnIYq658t5HUm*7DNF zc3$xWmQB*VljU`g^jsd}M<+sY%?o@I_N@d_sGrSuy!re7Wa)uW>j)7ADH$6{Hf36g zVs_^E^O=Hh5^puPhI}ToV|3kyOVUnkuj#TO*!K~eG37J1sFwz(d%J!Gw>w3vB+Z#c zdT9H=zC%UalfZ2tBXp$gixO*%1xq-{06ueK@J=w172hWuEVv6e z@|Irh_I?N=&>iATaLc3K?7^p8L)KfQkVrprS|69j~2@%oZF@g+oK*uzJBZ1*>fU&D|$o6$$`3oy?zbK}!JTpm-a%=|?Q z)qk$*$m~Zn?{s^Yn139D8J-u)=I8kwY6=XiYtk@qqB7Bs$AeGN1m9Z5MG-E zL?N-X)3^?elrtGSji4K)Ib@RaL_hHgEt>bzriY<4yJ)sIzVfRu}f47(kV#%_)Q=s64@bH0W-JhbShz2lVfBP>>rsyQ@rbs z7KWSxvc33eS5D9<)hP$HBL-V!qtS=$H3pNOS%N?wJEs6M--x_&-ylIvw@WTGs+`4O zBrbA5@HLDSZW)S1H zk2yBKd_G$$RZFz}9TdvhO1=u`9jwn{_OMhek&6rsjtZs3%@Fgy5d$d5lB#L#7HxIvt zNY~imi8oJrQqNNf^H=1}UC598QLtt!UwO^qbk|?AkgIad7PHm0WSMozT6enWn}!%b z>_^XpkLPqXpTo4`3DZw++OVe(3XH=XGGI_!FXr6MU{<19SB*suL@d{{X%lW5kEal+ z-?fq74|!H}{|vCy-iyup>|c*lF3;(ph^Iut9cehkUyBe8)oTEW(AX7;*jBzYjcuVE z_oBt6`5^DA8}&oA_GT)6oVpfI()Q^W8;3)5on1X2?9|r&Ci{ z=HK5F8bNh1SyGIAf&I}2c|LUju~|O#X5k#4N(wf;p(z2IR)x#w{XhKQh>a5T&cQ|)8FP?@L`?eRY{IQ09ZQToMGh83Z|Hdl3Wzg-+dgd^ z2gx^tPbG#uS&QVE2DVWZDZ)nN0-R6BECZH70uq7chY``g_`q{6NwLPFwlzliLzkY? zU-svY@(!_p-9k%2VM$u~)3TA8wo&;S{S=H5*`;CytVOW;6ZyE3H6lmi<*GrjF6YDd z?>8#7DEk!<5=EhNvc8`SE@$41c9uaJ~b%WjuA z`d)e&#HXBgd+})?(#lp#NU2G(x`>UM^AtdS?dVVU)4dnENvdy=$_Nr=y#*fvgYAO% zE{}XO?36=MJE)Zj^W7DNj=TP7>eb&JSQ^6An?ndxM268I=@To<_}7kOk!iBYml0{f z>W!CaC}e+-{BhcSq_&0ZFbZ?{K2TUcOy|_72kP@i$IfhpIw-e(i4DGXzvtY}zYBIiQVb&?Vnu7DrA4?# z+M2|xHF>ZBf-hC~oLfq#wVHd+p`-`m$yZ8~mijPAfh{2!_1M5(Ayy2re0l}d>9O-| zkJ7)&u33M!LwAt90N zHmM7YfkCG#D&VSz2&L}*j%d4TX)Jbb&{mf@t zB>SViIvR<9fibUg?#|%giEgk&Cm*Qoa;k-Y)e+V@ojPs-pRvrL@$oh5LPO3Ux@)U& zGla~Y8txyVrLO3k_&fbBOH@)nz3Ux)SEz@D zNGsWfT`!VH1of-etylc~nTHn9)p5hBCN$;8yu#(T^iv`cxhtU#PbXp0MNKPM;p`D{ zEs%g$XOzq_x`V1n>JU$5{BK4gFQdSXz!8y}>Xw2oA;R6u_0613!6u|qiHUP0UQ0-W z2gvD}j41@e*~86 zxt5gq4}Y7y{$&RW5HJySWk?Ys8_S>KBn{ODN25B~OFY_?mJy3KZQYz+CbNowa_{v= z%X{R!0UZ7)qaYO-Su$MEEP(kEY9gh83ZDE5GbkN>g7IZmsGl-$D1JZx-1!e#CfdC~ zSZ()`%v(A@?P&x^!CMp(OYy`3a;N}V$c6DOt&OjY{^j^3lgxmKvwp9fN)aOc?dG+6 zRilhkKB3xza-fk_gcHNjLJszOg*C8@IRnZN>lEYUvBilNvK1-2mSEX+qA!Mw5E^dE z6Le}SKe28-c7!aAxhQp9qQ*K$#8LwaKs~P0&*WaRy8T{BhuoQW2Vsjt4Caq382xc5 zZq3?k?v9fX61{P8E&!ky8q$IGCvn9I1#lDJ*_rzqS;yd2Azjt%Z?LGB z-OC#)?|9m%UHk5`h%m6cF9q*8sn6tgSsQ~6L!eh{H(L~FYyc1v8qCA_6Hgg7Zz&X+reZM*eOEDU?=dfRTofgRS5Wm0!Vekm8~h`}oO1j@4>;=z(2Dku zXs+7WUB%b;fF#!&S{vjB?mi-fX~&fW;@@lZ(*rRQkJ?m7^gEd0$qC4bviLMy-rhSI zHqqe>rIK#(%&Yj=G=>dW%xR=yhuGBuv)`vP#^t(k$MFnNZbfNcm>F;p=EDjCDMz{JiIv*Yw zec{M>jkCca>aI<>Pa{{RYCVeg~gaDB&y5lpOi!`Ry5;xM*f+s_dL<<9i#D&G`};Cp|R-YO8(fw!dz;lTXYfR}9G%Im$>Nl`$ykkt3dJf8L0vkQ!oN3u`)_Xr4B+ zvPm2Iy0K3oy7=mu=EJ4|svnDeM$Hs2lBS{kb%?GFE5UBIY|t7QUw_>Z=>rw^uS54> zOq&xufbr*ZM*P`>FXHU%v<{2w`E=>sa(~6)(NQ(dUon&IwsKeaP||oS{Kn~=6@K$= zd=&~1MKOAc%TV?zi}X$9L$Z z3RyYre&Km~3RywsmvmPJABpLoLRMIO_ZQ~-jpWl-Q>BKJBzS>zjZ77*^t(+{Of<~G zz$`mu6pN5UGdsMQr$L*TdJ8RmS~rM|}b@v$@UKCzU9iWf-r zU;RYm2juTT4L@d$RJ3D09vn-7dsL!5ZnF|8mkqj&vMG}c#9Y&xhXO4?#yo(TrF zC(1$2bz^=5T}V=2^udm*g=_`)Y`Si(*{fgSKT2?M%5(f!QWFt0gKgA6<^_~fi#y7< z*3^juSBtGW>o4*6fS6RPmrw)O+^A1@!agdrlmTbNs1rgK zbnhwm7`4ONp&5;e8VMWwq^V%r>3x6U#dM@=38r~XIx?`wN;`b{Fh<;ksVftE$5RhBhH%L5*+UA6l5aRb~ zqK5pWCmP?vzd@35PVsa3%aNIWZm6MzL0O2Vi&T0sBv$FsE)6esJkK}0=-%Ld>lX>k zwne;EmMSHxQ^Tf-G(9Z)Gf&u=Djn*ra>ydfGU0^=zR#TuZ{TFOo-S%J!r!VTZ{O`Dx{Vlw zj6{MfLJ8wSW8gVJ_Z=7u*X8O)lW~& zx`BUe7&b zrT3J#Gikd4>3yKI5}8=LgeErf+`Bu(VrCdr{9cDE_p|e2&lA5U*Ikh8dOt(~_Br$# zN=Hb)lll~{Z$q6!d3nYgv&z@?J0Ufk;Q|@=??y->t|3eB(8nkd=?h5wV!=V)#W9OZ zLH~SEulu8wXTm__7o;~>880Bs5#q|2e4ODR{Uma9C9!iqU5y6LJC9PHzFRGwf2@$( ze>h>ra5jRs1bc?Wz4PfqJp$UtfnUn-`_dpO(uBs#X0PqNM-EM*u+~&(8EV~{aB4U| zBO4>7#p8dTPf~Nw@v+J(`;L2lPAOoK@{mgn@ptF6UBB-3_+QFmCnOZfsIa2K%Is81 z`5Q}-W!dourw>f%HFOrWpfSaW2X(2bjNr>3_Of$$RI22iOK6kM*}RX*^oan}E?8s)OB$T#1El5hrJ>@%Uj2X~HwRKqUZcb6IlAey7>< zd4V{JK9D55C0n=G(@$6q*R40u9o#Foeess1>W@j0DPL?(QAq0{`YzS?-mFh#>O4Bq zS0zW6dCV{_HEShDL$0LOYqyP5p~w$sI0buDDG)o?a`Cf?ja~a^DAV@#ORxD@ob5}! zT6J0u z!egvZdoRXS3NzmQ42zT3D@)WLZ9B5u*W^!9?fH(zd>e9)g+?CTU}JJq#cKID>Af5x zU*)*}-ox2CRQ?RNG~_s(pPeLiV2?7tvSa+DS?6d>N{?A^cTzfu>On1Bj;o_pO84XX4xX6 z`uIEkeQ(CT-&_)Ca1w=p);eMRYi%E6>Bn{uUiIvN1IF-hKps?PWN9ZEFZP(3Q=idQe8FIJaD&s!Hm1`Ls~LAea&z$HrhP@p{;%uZ)5~6`?q0aPv*tywW?k`4Oz_y| z{at>M{%S3ZuGXwwxEpmR3|ZYlPvX?1XK*w8G4(4c$mP#aqD?Mv>0z8bri%Y1D_ml> zgkr@!<{P~*1|x=~(;o8b$Vw7AbJfhirLaB?iUBcHq?x4yQ8?6ScM&aO4~jPJDkwV? zyVaz_KHxti@+LOgnd=DKQLGU9wzbt*v@QG7VfC<7)?C%0ZD|L7X$6FRGg2Db_93NN zk6ixTK^}OAf@eM(>W((ybPn1Hub~-mc;}JFXS3PpAww{PE0VeP_TXmjujY6}ryjw# zT*|>O<1Nr)jGxI)Xow6R3`+7MSUAe#edn-RDZpu)(z8Nmj&$1a<1=iUeN_fS6|Ihy2bbyYg<9E}~;g@Bt zmHuaMc|Rv7Yi~Zh8+qgYB;0h2Sc3k%x0sFwLo}PBB|EG0f|DSLlB@{N%sIgp;qPwy zlgTvF$-+ZDwEl#tAjClOt#Kbk%skeq*N6WujGXLo$>W&fzNUDH{wVydB!XY6Ij(_B z;2Qp3xh@mrVYM{!@6?3b7y`W1CdQB_wEX*!x ih&hjmw$psL#; * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_lord_marrowgar.cpp index 59527ff..2509564 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_professor_putricide.cpp index 35b69b1..c28a0cf 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_professor_putricide.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_rotface.cpp index 3703d84..af73e14 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_rotface.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_sindragosa.cpp index 189ee8a..770a3a2 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_sindragosa.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -305,8 +305,8 @@ class boss_sindragosa : public CreatureScript { _bCanLand = true; ++_bombsLanded; - if(_bombsLanded != 2) - events.ScheduleEvent(EVENT_FROST_BOMB, 5000); + if(_bombsLanded != 4) + events.ScheduleEvent(EVENT_FROST_BOMB, 1000); break; } default: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_the_lich_king.cpp index 47fd13b..1b44366 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_the_lich_king.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -20,7 +20,7 @@ #define GOSSIP_MENU 10600 //#define GOSSIP_MENU "Long have I waited for this day, hero. Are you and your allies prepared to bring the Lich King to justice? We charge on your command!" -#define GOSSIP_START_EVENT "We are prepared, Highlord. Let us battle for the fate of Azeroth! For the light of dawn!" +#define GOSSIP_START_EVENT "Nous sommes prêts, généralissime. Laissez-nous la bataille pour le destin d'Azeroth! Pour la lumière de l'aube!" enum eEnums { @@ -638,6 +638,7 @@ class boss_the_lich_king : public CreatureScript } case ACTION_PHASE_SWITCH_1: { + if(GetPhase(events) == PHASE_1) events.CancelEvent(EVENT_NECROTIC_PLAGUE); uint32 nextPhase = PHASE_2_TRANSITION; if(GetPhase(events) == PHASE_3) nextPhase = PHASE_4_TRANSITION; @@ -1408,21 +1409,21 @@ class npc_tirion_icc : public CreatureScript if(unfriendlyPlayer) { char buf[255] = {0}; - sprintf(buf, "Sorry, but everyone in raid should have at least friendly reputation with the Argent Crusade to participate in the final battle. Player '%s' doesn't meet this requirement.", unfriendlyPlayer->GetName()); + sprintf(buf, "Désolé, mais tout le monde dans le raid doit avoir au moins la réputation amicale avec la Croisade d'argent pour participer à la bataille finale. Le joueur '%s' ne répond pas à cette exigence.", unfriendlyPlayer->GetName()); creature->MonsterSay(buf, LANG_UNIVERSAL, player->GetGUID()); return true; } if(_instance->GetBossState(DATA_THE_LICH_KING) == DONE) { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "The Lich King was already defeated here. Teleport me back to the Light's Hammer", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Le Roi liche a déjà été vaincu ici. Me téléporter au Marteau de la Lumière", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); player->SEND_GOSSIP_MENU(GOSSIP_MENU, creature->GetGUID()); return true; } if((!player->GetGroup() || !player->GetGroup()->IsLeader(player->GetGUID())) && !player->isGameMaster()) { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Sorry, I'm not the raid leader", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Désolé, je ne suis pas le chef de raid", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); player->SEND_GOSSIP_MENU(GOSSIP_MENU, creature->GetGUID()); return true; } @@ -1440,7 +1441,7 @@ class npc_tirion_icc : public CreatureScript switch(uiAction) { case GOSSIP_ACTION_INFO_DEF+2: - creature->MonsterSay("OK, I'll wait for raid leader", LANG_UNIVERSAL, player->GetGUID()); + creature->MonsterSay("OK, je vais attendre le chef de raid", LANG_UNIVERSAL, player->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF+4: creature->CastSpell(player,LIGHT_S_HAMMER_TELEPORT, true); player->GetGUID(); @@ -1451,7 +1452,7 @@ class npc_tirion_icc : public CreatureScript player->CLOSE_GOSSIP_MENU(); break; default: - creature->MonsterSay("You've just found a bug. Contact server admin and explain what to do to reproduce this bug", LANG_UNIVERSAL, player->GetGUID()); + creature->MonsterSay("Vous avez trouvé une erreur. Contactez administrateur du serveur et expliquez ce qu'il faut faire pour reproduire ce bug", LANG_UNIVERSAL, player->GetGUID()); break; } return true; @@ -1934,6 +1935,7 @@ class spell_lich_king_necrotic_plague : public SpellScriptLoader if(u->GetTypeId() != TYPEID_UNIT) return false; //Ignore totems + if(((Creature*)u)->isTotem()) return false; //Ignore pets @@ -2912,6 +2914,7 @@ class npc_ice_sphere_icc : public CreatureScript { m_victimGuid = victim->GetGUID(); me->GetMotionMaster()->MoveChase(victim); + AttackStart(victim); //AttackStart(victim); DoCast(victim, SPELL_ICE_PULSE, true); } @@ -3435,4 +3438,4 @@ void AddSC_boss_lichking() new spell_lich_king_defile; new spell_lich_king_tirion_mass_resurrection; new spell_lich_king_harvest_soul; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_valithria_dreamwalker.cpp index 188f2da..97dba56 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -1399,10 +1399,10 @@ class spell_dreamwalker_twisted_nightmares : public SpellScriptLoader void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - if(InstanceScript* pInstanceScript = GetHitUnit()->GetInstanceScript()) + if(InstanceScript* pInstanceScript = GetHitUnit()->GetInstanceScript()) GetHitUnit()->CastSpell((Unit*)NULL, GetSpellInfo()->EffectTriggerSpell[effIndex], true, NULL, NULL, pInstanceScript->GetData64(DATA_VALITHRIA_DREAMWALKER)); } - + void Register() { OnEffect += SpellEffectFn(spell_dreamwalker_twisted_nightmares_SpellScript::HandleScript, EFFECT_2, SPELL_EFFECT_FORCE_CAST); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel.cpp index 13078c4..19c5de1 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel.h index 34cd8d3..e8005ea 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -51,6 +51,12 @@ enum TeleporterSpells SINDRAGOSA_S_LAIR_TELEPORT = 70861, }; +enum ZoneBuffs +{ + AURA_ZONE_PCT_BUFF_A_10 = 73824, + AURA_ZONE_PCT_BUFF_H_10 = 73818, +}; + enum DataTypes { // Encounter States/Boss GUIDs @@ -109,6 +115,30 @@ enum DataTypes GUID_EDGE_DESTROY_WARNING = 48, DATA_BEEN_WAITING_ACHIEVEMENT = 49, DATA_NECK_DEEP_ACHIEVEMENT = 50, + // For Gunship + DATA_FIRST_SQUAD_STATE = 100, + DATA_SECOND_SQUAD_STATE = 101, + DATA_SPIRE_FROSTWYRM_STATE = 102, + DATA_GB_HIGH_OVERLORD_SAURFANG = 103, + DATA_GB_MURADIN_BRONZEBEARD = 104, + DATA_HIGH_OVERLORD_SAURFANG_NOT_VISUAL = 105, + DATA_GB_BATTLE_MAGE = 106, + DATA_SKYBREAKER_BOSS = 107, + DATA_ORGRIMMAR_HAMMER_BOSS = 108, + DATA_MURADIN_BRONZEBEARD_NOT_VISUAL = 109, + + // misc + DATA_DEATHBOUND_WARD1 = 61, + DATA_DEATHBOUND_WARD2 = 62, + DATA_DEATHBOUND_WARD3 = 63, + DATA_DEATHBOUND_WARD4 = 64, + DATA_HIGH_OVERLORD_VAROK_SAURFANG = 65, + DATA_MURADIN_BRONZEBEARD = 66, + DATA_GUNSHIP_BATTLE = 67, + DATA_ZONE_BUFF_STATUS = 68, + GUID_PLAYER_LOCATION = 69, + GUID_SINDRAGOSAS_WARD = 70, + DATA_SINDRAGOSAS_GAUNTLET = 71, }; enum CreaturesIds @@ -162,6 +192,34 @@ enum CreaturesIds NPC_REANIMATED_ADHERENT = 38010, NPC_VENGEFUL_SHADE = 38222, + // Gunship Battle + NPC_GB_SKYBREAKER = 37540, + NPC_GB_ORGRIMS_HAMMER = 37215, + NPC_GB_HIGH_OVERLORD_SAURFANG = 36939, + NPC_GB_MURADIN_BRONZEBEARD = 36948, + NPC_GB_HIHG_CAPTAIN_JUSTIN_BARTLETT = 37182, + NPC_GB_HIGH_OVERLORD_SAURFANG_NOT_VISUAL = 50004, + NPC_GB_MURADIN_BRONZEBEARD_NOT_VISUAL = 50006, + NPC_GB_SKYBREAKER_SORCERER = 37026, + NPC_GB_SKYBREAKER_SORCERERS = 37116, + NPC_GB_KORKRON_REAVER = 37920, + NPC_GB_KORKRON_REAVERS = 36957, + NPC_GB_KORKRON_SERGANTE = 36960, + NPC_GB_SKYBREAKER_SERGANTE = 36961, + NPC_GB_KORKRON_BATTLE_MAGE = 37117, + NPC_GB_SKYBREAKER_MARINE = 36950, + NPC_GB_KORKRON_ROCKETEER = 36982, + NPC_GB_SKYBREAKER_MORTAR_SOLDIER = 36978, + NPC_GB_KORKRON_AXETHROWER = 36968, + NPC_GB_SKYBREAKER_RIFLEMAN = 36969, + NPC_GB_SKYBREAKER_DECKHAND = 36970, + NPC_GB_ZAFOD_BOOMBOX = 37184, + NPC_GB_ALLIANCE_CANON = 36838, + NPC_GB_HORDE_CANON = 36839, + NPC_GB_INVISIBLE_STALKER = 32780, + NPC_GB_PORTAL = 37227, + NPC_GB_GUNSHIP_HULL = 37547, + // Deathbringer Saurfang NPC_DEATHBRINGER_SAURFANG = 37813, NPC_BLOOD_BEAST = 38508, @@ -254,7 +312,28 @@ enum CreaturesIds NPC_ICY_BLAST = 38223, NPC_FROST_BOMB = 37186, NPC_ICE_TOMB = 36980, - + NPC_SINDRAGOSAS_WARD = 37503, + + // Ramparts of Skulls + NPC_KORKRON_PRIMALIST = 37030, + NPC_SKYBREAKER_HIEROPHANT = 37027, + NPC_KORKRON_DEFENDER = 37032, + NPC_SKYBREAKER_PROTECTOR = 36998, + NPC_KORKRON_NECROLYTE = 37149, + NPC_SKYBREAKER_SUMMONER = 37148, + NPC_KORKRON_ORACLE = 37031, + NPC_SKYBREAKER_LIGHT = 37016, + NPC_KORKRON_REAVER = 37029, + NPC_SKYBREAKER_DREADBLADE = 37004, + NPC_KORKRON_SNIPER = 37146, + NPC_SKYBREAKER_MARKSMAN = 37144, + NPC_KORKRON_TEMPLAR = 37034, + NPC_SKYBREAKER_VICAR = 37021, + NPC_KORKRON_VANQUISHER = 37035, + NPC_SKYBREAKER_VINDICATOR = 37003, + NPC_KORKRON_INVOKER = 37033, + NPC_SKYBREAKER_SORCERER = 37026, + NPC_SPIRE_FROSTWYRM = 37230, // The Lich King NPC_THE_LICH_KING = 36597, NPC_TIRION_ICC = 38995, @@ -271,6 +350,7 @@ enum CreaturesIds NPC_RAGING_SPIRIT = 36701, NPC_TRIGGER = 38667, NPC_VILE_SPIRIT = 37799, + NPC_TERENAS_MENETHIL_OUTRO = 38579, }; enum GameObjectsIds @@ -289,7 +369,19 @@ enum GameObjectsIds // Lady Deathwhisper GO_ORATORY_OF_THE_DAMNED_ENTRANCE = 201563, GO_LADY_DEATHWHISPER_ELEVATOR = 202220, - + //Gunship Battle + GO_ORGRIM_S_HAMMER_HORDE_ICC = 201812, + GO_ORGRIM_S_HAMMER_ALLIANCE_ICC = 201581, + GO_THE_SKYBREAKER_HORDE_ICC = 201811, + GO_THE_SKYBREAKER_ALLIANCE_ICC = 201580, + GO_CAPITAN_CHEST_A_10N = 201872, + GO_CAPITAN_CHEST_A_25N = 201873, + GO_CAPITAN_CHEST_A_10H = 201874, + GO_CAPITAN_CHEST_A_25H = 201875, + GO_CAPITAN_CHEST_H_10N = 202177, + GO_CAPITAN_CHEST_H_25N = 202178, + GO_CAPITAN_CHEST_H_10H = 202179, + GO_CAPITAN_CHEST_H_25H = 202180, // Deathbringer Saurfang GO_SAURFANG_S_DOOR = 201825, GO_DEATHBRINGER_S_CACHE_10N = 202239, diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel_teleport.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel_teleport.cpp index 9fca5fb..0e1a950 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel_teleport.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/icecrown_citadel_teleport.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -43,6 +43,7 @@ class icecrown_citadel_teleport : public GameObjectScript player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEXT(GOSSIP_TELEPORT_ORATORY_OF_THE_DAMNED), GOSSIP_SENDER_ICC_PORT, ORATORY_OF_THE_DAMNED_TELEPORT); if(instance->GetBossState(DATA_LADY_DEATHWHISPER) == DONE) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEXT(GOSSIP_TELEPORT_RAMPART_OF_SKULLS), GOSSIP_SENDER_ICC_PORT, RAMPART_OF_SKULLS_TELEPORT); + //if(instance->GetBossState(DATA_GUNSHIP_EVENT) == DONE && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) == DONE) if(instance->GetBossState(DATA_GUNSHIP_EVENT) == DONE) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEXT(GOSSIP_TELEPORT_DEATHBRINGERS_RISE), GOSSIP_SENDER_ICC_PORT, DEATHBRINGER_S_RISE_TELEPORT); if(instance->GetData(DATA_COLDFLAME_JETS) == DONE) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/instance_icecrown_citadel.cpp index f5466b9..94b2835 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -16,6 +16,24 @@ #include "Map.h" #include "PoolMgr.h" #include "icecrown_citadel.h" +#include "MapManager.h" +#include "Transport.h" +#include "AccountMgr.h" + +enum EventIds +{ + EVENT_QUAKE = 23437, + EVENT_SECOND_REMORSELESS_WINTER = 23507, + EVENT_TELEPORT_TO_FROSMOURNE = 23617, +}; + +enum TimedEvents +{ + EVENT_UPDATE_EXECUTION_TIME = 1, + EVENT_QUAKE_SHATTER = 2, + EVENT_REBUILD_PLATFORM = 3, +}; + DoorData const doorData[] = { @@ -84,6 +102,18 @@ class instance_icecrown_citadel : public InstanceMapScript TeamInInstance = 0; HeroicAttempts = MaxHeroicAttempts; LadyDeathwisperElevatorGUID = 0; + // Gunship Battle + FirstSquadState = 0; + SecondSquadState = 0; + SpireSquadState = 0; + SkybreakerBossGUID = 0; + OrgrimmarBossGUID = 0; + DeathbringerSaurfangGbGUID = 0; + MuradinBronzebeardGbGUID = 0; + DeathbringerSaurfangNotVisualGUID = 0; + MuradinBronzebeardNotVisualGUID = 0; + GbBattleMageGUID = 0; + // Gunship Battle DeathbringerSaurfangGUID = 0; DeathbringerSaurfangDoorGUID = 0; DeathbringerSaurfangEventGUID = 0; @@ -135,8 +165,13 @@ class instance_icecrown_citadel : public InstanceMapScript IsOrbWhispererEligible = true; ColdflameJetsState = NOT_STARTED; BloodQuickeningState = NOT_STARTED; + SindragosaGauntlet = NOT_STARTED; BloodQuickeningTimer = 0; BloodQuickeningMinutes = 0; + ZoneBuffState = 0; + isPrepared = false; + SindragosasWardGUID = 0; + SindragosaGauntletDoorGUID = 0; } void FillInitialWorldStates(WorldPacket& data) @@ -153,6 +188,15 @@ class instance_icecrown_citadel : public InstanceMapScript if(!TeamInInstance) TeamInInstance = pPlayer->GetTeam(); + if(GetData(DATA_ZONE_BUFF_STATUS) == 1) + { + if(pPlayer->HasAura(AURA_ZONE_PCT_BUFF_A_10)) + DoRemoveAurasDueToSpellOnPlayers(AURA_ZONE_PCT_BUFF_A_10); + else if(pPlayer->HasAura(AURA_ZONE_PCT_BUFF_H_10)) + DoRemoveAurasDueToSpellOnPlayers(AURA_ZONE_PCT_BUFF_H_10); + } + + PrepareGunshipEvent(); // Spawn Gunship Event if(TeamInInstance) { switch(TeamInInstance) @@ -181,6 +225,28 @@ class instance_icecrown_citadel : public InstanceMapScript switch(creature->GetEntry()) { + case NPC_GB_SKYBREAKER: + SkybreakerBossGUID = creature->GetGUID(); + break; + case NPC_GB_ORGRIMS_HAMMER: + OrgrimmarBossGUID = creature->GetGUID(); + break; + case NPC_GB_HIGH_OVERLORD_SAURFANG: + DeathbringerSaurfangGbGUID = creature->GetGUID(); + break; + case NPC_GB_MURADIN_BRONZEBEARD: + MuradinBronzebeardGbGUID = creature->GetGUID(); + break; + case NPC_GB_HIGH_OVERLORD_SAURFANG_NOT_VISUAL: + DeathbringerSaurfangNotVisualGUID = creature->GetGUID(); + break; + case NPC_GB_MURADIN_BRONZEBEARD_NOT_VISUAL: + MuradinBronzebeardNotVisualGUID = creature->GetGUID(); + break; + case NPC_GB_SKYBREAKER_SORCERERS: + case NPC_GB_KORKRON_BATTLE_MAGE: + GbBattleMageGUID = creature->GetGUID(); + break; case NPC_KOR_KRON_GENERAL: if(TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_ALLIANCE_COMMANDER, ALLIANCE); @@ -302,6 +368,9 @@ class instance_icecrown_citadel : public InstanceMapScript case NPC_SPIRIT_WARDEN: uiSpiritWarden = creature->GetGUID(); break; + case NPC_SINDRAGOSAS_WARD: + SindragosasWardGUID = creature->GetGUID(); + break; default: break; } @@ -421,7 +490,6 @@ class instance_icecrown_citadel : public InstanceMapScript case GO_GREEN_DRAGON_BOSS_EXIT: case GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_02: case GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_03: - case GO_SINDRAGOSA_ENTRANCE_DOOR: case GO_SINDRAGOSA_SHORTCUT_ENTRANCE_DOOR: case GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR: case GO_ICE_WALL: @@ -554,6 +622,11 @@ class instance_icecrown_citadel : public InstanceMapScript uiEdgeDestroyWarning = go->GetGUID(); go->SetGoState(GO_STATE_READY); break; + case GO_SINDRAGOSA_ENTRANCE_DOOR: + if(GetData(DATA_SINDRAGOSAS_GAUNTLET) == DONE) + go->SetGoState(GO_STATE_READY); + SindragosaGauntletDoorGUID = go->GetGUID(); + break; default: break; } @@ -599,6 +672,12 @@ class instance_icecrown_citadel : public InstanceMapScript { switch(type) { + case DATA_FIRST_SQUAD_STATE: + return FirstSquadState; + case DATA_SECOND_SQUAD_STATE: + return SecondSquadState; + case DATA_SPIRE_FROSTWYRM_STATE: + return SpireSquadState; case DATA_SINDRAGOSA_FROSTWYRMS: return FrostwyrmGUIDs.size(); case DATA_SPINESTALKER: @@ -613,6 +692,10 @@ class instance_icecrown_citadel : public InstanceMapScript return BloodQuickeningState; case DATA_HEROIC_ATTEMPTS: return HeroicAttempts; + case DATA_ZONE_BUFF_STATUS: + return ZoneBuffState; + case DATA_SINDRAGOSAS_GAUNTLET: + return SindragosaGauntlet; default: break; } @@ -624,6 +707,21 @@ class instance_icecrown_citadel : public InstanceMapScript { switch(type) { + //Gunship battle + case DATA_SKYBREAKER_BOSS: + return SkybreakerBossGUID; + case DATA_ORGRIMMAR_HAMMER_BOSS: + return OrgrimmarBossGUID; + case DATA_GB_HIGH_OVERLORD_SAURFANG: + return DeathbringerSaurfangGbGUID; + case DATA_GB_MURADIN_BRONZEBEARD: + return MuradinBronzebeardGbGUID; + case DATA_HIGH_OVERLORD_SAURFANG_NOT_VISUAL: + return DeathbringerSaurfangNotVisualGUID; + case DATA_MURADIN_BRONZEBEARD_NOT_VISUAL: + return MuradinBronzebeardNotVisualGUID; + case DATA_GB_BATTLE_MAGE: + return GbBattleMageGUID; case GUID_ICE_SHARD_1: return uiIceShard1; case GUID_ICE_SHARD_2: @@ -701,6 +799,8 @@ class instance_icecrown_citadel : public InstanceMapScript return RimefangGUID; case DATA_THE_LICH_KING: return TheLichKingGUID; + case GUID_SINDRAGOSAS_WARD: + return SindragosasWardGUID; default: break; } @@ -716,7 +816,7 @@ class instance_icecrown_citadel : public InstanceMapScript switch(type) { case DATA_LADY_DEATHWHISPER: - SetBossState(DATA_GUNSHIP_EVENT, state); // TEMP HACK UNTIL GUNSHIP SCRIPTED + // SetBossState(DATA_GUNSHIP_EVENT, state); if(state == DONE) { if(GameObject* pGO = instance->GetGameObject(LadyDeathwisperElevatorGUID)) @@ -937,6 +1037,18 @@ class instance_icecrown_citadel : public InstanceMapScript SaveToDB(); break; } + case DATA_ZONE_BUFF_STATUS: + ZoneBuffState = data; + break; + case DATA_SINDRAGOSAS_GAUNTLET: + SindragosaGauntlet = data; + if(SindragosaGauntlet == DONE) + { + SaveToDB(); + if(GameObject* go = instance->GetGameObject(SindragosaGauntletDoorGUID)) + go->SetGoState(GO_STATE_ACTIVE); + } + break; default: break; } @@ -1175,6 +1287,9 @@ class instance_icecrown_citadel : public InstanceMapScript loadStream >> temp; BloodQuickeningState = temp ? DONE : NOT_STARTED; // DONE means finished (not success/fail) loadStream >> BloodQuickeningMinutes; + loadStream >> temp; + SindragosaGauntlet = temp ? DONE: NOT_STARTED; + loadStream >> SindragosaGauntlet; } else OUT_LOAD_INST_DATA_FAIL; OUT_LOAD_INST_DATA_COMPLETE; @@ -1207,9 +1322,293 @@ class instance_icecrown_citadel : public InstanceMapScript } } + void PrepareGunshipEvent() + { + if(isPrepared || GetBossState(DATA_GUNSHIP_EVENT) == DONE) + return; + + if(TeamInInstance == ALLIANCE) + { + if(Transport* th = sMapMgr->LoadTransportInMap(instance, GO_ORGRIM_S_HAMMER_ALLIANCE_ICC, 108000)) + { + th->AddNPCPassengerInInstance(NPC_GB_ORGRIMS_HAMMER, 1.845810f, 1.268872f, 34.526218f, 1.5890f); + th->AddNPCPassengerInInstance(NPC_GB_HIGH_OVERLORD_SAURFANG, 37.18615f, 0.00016f, 36.78849f, 3.13683f); + th->AddNPCPassengerInInstance(NPC_GB_INVISIBLE_STALKER, 37.18615f, 0.00016f, 36.78849f, 3.13683f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_BATTLE_MAGE, 47.2929f, -4.308941f, 37.5555f, 3.05033f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_BATTLE_MAGE, 47.34621f, 4.032004f, 37.70952f, 3.05033f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_BATTLE_MAGE, 15.03016f, 0.00016f, 37.70952f, 1.55138f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -13.19547f, -27.160213f, 35.47252f, 3.10672f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -18.33902f, -25.230491f, 33.04052f, 3.00672f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -60.1251f, -1.27014f, 42.8335f, 5.16073f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -48.2651f, 16.78034f, 34.2515f, 0.04292f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -14.8356f, 27.931688f, 33.363f, 1.73231f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 10.2702f, 20.62966f, 35.37483f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 39.32459f, 14.50176f, 36.88428f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 46.17223f, -6.638763f, 37.35444f, 1.32f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 27.4456f, -13.397498f, 36.34746f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 18.16184f, 1.37897f, 35.31705f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -18.11516f, -0.196236f, 45.15709f, 2.9f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -18.11844f, -0.19624f, 49.18192f, 1.6f); + + if(instance->ToInstanceMap()->GetMaxPlayers() == 10) + { + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, -3.170555f, 28.30652f, 34.21082f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, -12.0928f, 27.65942f, 33.58557f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, 14.92804f, 26.18018f, 35.47803f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, 24.70331f, 25.36584f, 35.97845f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_ROCKETEER, -11.44849f, -25.71838f, 33.64343f, 1.49248f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_ROCKETEER, 12.30336f, -25.69653f, 35.32373f, 1.49248f); + } + else + { + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, -3.170555f, 28.30652f, 34.21082f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, -12.0928f, 27.65942f, 33.58557f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, 14.92804f, 26.18018f, 35.47803f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, 24.70331f, 25.36584f, 35.97845f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, 19.92804f, 27.18018f, 35.47803f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_AXETHROWER, -7.70331f, 28.36584f, 33.88557f, 1.66527f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_ROCKETEER, -11.44849f, -25.71838f, 33.64343f, 1.49248f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_ROCKETEER, 12.30336f, -25.69653f, 35.32373f, 1.49248f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_ROCKETEER, -3.44849f, -25.71838f, 34.21082f, 1.49248f); + th->AddNPCPassengerInInstance(NPC_GB_KORKRON_ROCKETEER, 3.30336f, -25.69653f, 35.32373f, 1.49248f); + } + } + + if(Transport* t = sMapMgr->LoadTransportInMap(instance, GO_THE_SKYBREAKER_ALLIANCE_ICC, 108000)) + { + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER, -17.156807f, -1.633260f, 20.81273f, 4.52672f); + t->AddNPCPassengerInInstance(NPC_GB_MURADIN_BRONZEBEARD, 13.51547f, -0.160213f, 20.87252f, 3.10672f); + t->AddNPCPassengerInInstance(NPC_GB_HIHG_CAPTAIN_JUSTIN_BARTLETT, 42.78902f, -0.010491f, 25.24052f, 3.00672f); + t->AddNPCPassengerInInstance(NPC_GB_HIGH_OVERLORD_SAURFANG_NOT_VISUAL, -12.9806f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_ZAFOD_BOOMBOX, 18.8042f, 9.907914f, 20.33559f, 3.10672f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_DECKHAND, -64.8423f, 4.4658f, 23.4352f, 2.698897f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_DECKHAND, 35.54972f, 19.93269f, 25.0333f, 4.71242f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_DECKHAND, -36.39837f, 3.13127f, 20.4496f, 1.5708f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_DECKHAND, -36.23974f, -2.75767f, 20.4506f, 4.69496f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_DECKHAND, 41.94677f, 44.08411f, 24.66587f, 1.62032f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 13.51547f, -0.160213f, 20.87252f, 3.10672f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 42.78902f, -0.010491f, 25.24052f, 3.00672f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 14.0551f, 3.65014f, 20.7935f, 3.16073f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 14.0551f, -4.65034f, 20.7915f, 3.04292f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -17.8356f, 0.031688f, 20.823f, 4.73231f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -34.2702f, -26.18966f, 21.37483f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -11.64459f, -19.85176f, 20.88428f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -19.88223f, -6.578763f, 20.57444f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -41.4456f, -7.647498f, 20.49746f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 0.554884f, -1.232897f, 20.53705f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -50.16516f, 9.716236f, 23.58709f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 11.45844f, 16.36624f, 20.54192f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 19.72286f, -2.193787f, 33.06982f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 19.72286f, -2.193787f, 33.06982f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 8.599396f, -28.55855f, 24.79919f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 38.94339f, -33.808f, 25.39618f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 58.15474f, 0.748094f, 41.87663f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 5.607554f, -6.350654f, 34.00357f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 4.780305f, -29.05227f, 35.09634f, 1.6f); + + if(instance->ToInstanceMap()->GetMaxPlayers() == 10) + { + t->AddNPCPassengerInInstance(NPC_GB_ALLIANCE_CANON, -5.15231f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_ALLIANCE_CANON, -28.0876f, -22.9462f, 21.659f, 4.72416f); + } else { + t->AddNPCPassengerInInstance(NPC_GB_ALLIANCE_CANON, -5.15231f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_ALLIANCE_CANON, -14.9806f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_ALLIANCE_CANON, -21.7406f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_ALLIANCE_CANON, -28.0876f, -22.9462f, 21.659f, 4.72416f); + } + } + } + + if(TeamInInstance == HORDE) + { + if(Transport* t = sMapMgr->LoadTransportInMap(instance, GO_THE_SKYBREAKER_HORDE_ICC, 77800)) + { + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER, -17.156807f, -1.633260f, 20.81273f, 4.52672f); + t->AddNPCPassengerInInstance(NPC_GB_MURADIN_BRONZEBEARD, 13.51547f, -0.160213f, 20.87252f, 3.10672f); + t->AddNPCPassengerInInstance(NPC_GB_HIHG_CAPTAIN_JUSTIN_BARTLETT, 42.78902f, -0.010491f, 25.24052f, 3.00672f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_SORCERERS, 14.0551f, 3.65014f, 20.7935f, 3.16073f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_SORCERERS, 14.0551f, -4.65034f, 20.7915f, 3.04292f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_SORCERERS, -17.8356f, 0.031688f, 20.823f, 4.73231f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 13.51547f, -0.160213f, 20.87252f, 3.10672f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 42.78902f, -0.010491f, 25.24052f, 3.00672f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 14.0551f, 3.65014f, 20.7935f, 3.16073f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 14.0551f, -4.65034f, 20.7915f, 3.04292f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -17.8356f, 0.031688f, 20.823f, 4.73231f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -34.2702f, -26.18966f, 21.37483f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -11.64459f, -19.85176f, 20.88428f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -19.88223f, -6.578763f, 20.57444f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -41.4456f, -7.647498f, 20.49746f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 0.554884f, -1.232897f, 20.53705f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -50.16516f, 9.716236f, 23.58709f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 11.45844f, 16.36624f, 20.54192f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 19.72286f, -2.193787f, 33.06982f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 19.72286f, -2.193787f, 33.06982f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 8.599396f, -28.55855f, 24.79919f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 38.94339f, -33.808f, 25.39618f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 58.15474f, 0.748094f, 41.87663f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 5.607554f, -6.350654f, 34.00357f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 4.780305f, -29.05227f, 35.09634f, 1.6f); + + if(instance->ToInstanceMap()->GetMaxPlayers() == 10) + { + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -5.15231f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -14.9806f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -21.7406f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -28.0876f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -8.61003f, 15.483f, 20.4158f, 4.69854f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -27.9583f, 14.8875f, 20.4428f, 4.77865f); + } + else + { + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, 0.15231f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -5.15231f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -14.9806f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -21.7406f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -28.0876f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -33.0876f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -8.61003f, 15.483f, 20.4158f, 4.69854f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -27.9583f, 14.8875f, 20.4428f, 4.77865f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -15.61003f, 15.483f, 20.4158f, 4.69854f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -20.9583f, 14.8875f, 20.4428f, 4.77865f); + } + } + + if(Transport* th = sMapMgr->LoadTransportInMap(instance,GO_ORGRIM_S_HAMMER_HORDE_ICC, 77800)) + { + th->AddNPCPassengerInInstance(NPC_GB_ORGRIMS_HAMMER, 1.845810f, 1.268872f, 34.526218f, 1.5890f); + th->AddNPCPassengerInInstance(NPC_GB_HIGH_OVERLORD_SAURFANG, 37.18615f, 0.00016f, 36.78849f, 3.13683f); + th->AddNPCPassengerInInstance(NPC_GB_MURADIN_BRONZEBEARD_NOT_VISUAL, -7.09684f, 30.582f, 34.5013f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_INVISIBLE_STALKER, 37.30764f, -0.143823f, 36.7936f, 3.13683f); + th->AddNPCPassengerInInstance(NPC_GB_ZAFOD_BOOMBOX, 35.18615f, 15.30652f, 37.64343f, 3.05033f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -13.19547f, -27.160213f, 35.47252f, 3.10672f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -18.33902f, -25.230491f, 33.04052f, 3.00672f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -60.1251f, -1.27014f, 42.8335f, 5.16073f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -48.2651f, 16.78034f, 34.2515f, 0.04292f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -14.8356f, 27.931688f, 33.363f, 1.73231f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 10.2702f, 20.62966f, 35.37483f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 39.32459f, 14.50176f, 36.88428f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 46.17223f, -6.638763f, 37.35444f, 1.32f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 27.4456f, -13.397498f, 36.34746f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 18.16184f, 1.37897f, 35.31705f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -18.11516f, -0.196236f, 45.15709f, 2.9f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -18.11844f, -0.19624f, 49.18192f, 1.6f); + + if(instance->ToInstanceMap()->GetMaxPlayers() == 10) + { + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, 22.6225f, 28.9309f, 36.3929f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, -21.7509f, 29.4207f, 34.2588f, 1.53591f); + } + else + { + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, 22.6225f, 28.9309f, 36.3929f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, 9.87745f, 30.5047f, 35.7147f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, -7.09684f, 30.582f, 34.5013f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, -21.7509f, 29.4207f, 34.2588f, 1.53591f); + } + } + } + + if(TeamInInstance == HORDE) + { + if(Transport* t = sMapMgr->LoadTransportInMap(instance, GO_THE_SKYBREAKER_HORDE_ICC, 77800)) + { + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER, -17.156807f, -1.633260f, 20.81273f, 4.52672f); + t->AddNPCPassengerInInstance(NPC_GB_MURADIN_BRONZEBEARD, 13.51547f, -0.160213f, 20.87252f, 3.10672f); + t->AddNPCPassengerInInstance(NPC_GB_HIHG_CAPTAIN_JUSTIN_BARTLETT, 42.78902f, -0.010491f, 25.24052f, 3.00672f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_SORCERERS, 14.0551f, 3.65014f, 20.7935f, 3.16073f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_SORCERERS, 14.0551f, -4.65034f, 20.7915f, 3.04292f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_SORCERERS, -17.8356f, 0.031688f, 20.823f, 4.73231f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 13.51547f, -0.160213f, 20.87252f, 3.10672f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 42.78902f, -0.010491f, 25.24052f, 3.00672f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 14.0551f, 3.65014f, 20.7935f, 3.16073f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 14.0551f, -4.65034f, 20.7915f, 3.04292f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -17.8356f, 0.031688f, 20.823f, 4.73231f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -34.2702f, -26.18966f, 21.37483f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -11.64459f, -19.85176f, 20.88428f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -19.88223f, -6.578763f, 20.57444f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -41.4456f, -7.647498f, 20.49746f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 0.554884f, -1.232897f, 20.53705f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -50.16516f, 9.716236f, 23.58709f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 11.45844f, 16.36624f, 20.54192f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 19.72286f, -2.193787f, 33.06982f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 19.72286f, -2.193787f, 33.06982f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 8.599396f, -28.55855f, 24.79919f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 38.94339f, -33.808f, 25.39618f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 58.15474f, 0.748094f, 41.87663f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 5.607554f, -6.350654f, 34.00357f, 1.6f); + t->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 4.780305f, -29.05227f, 35.09634f, 1.6f); + + if(instance->ToInstanceMap()->GetMaxPlayers() == 10) + { + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -5.15231f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -14.9806f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -21.7406f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -28.0876f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -8.61003f, 15.483f, 20.4158f, 4.69854f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -27.9583f, 14.8875f, 20.4428f, 4.77865f); + } else { + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, 0.15231f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -5.15231f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -14.9806f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -21.7406f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -28.0876f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_RIFLEMAN, -33.0876f, -22.9462f, 21.659f, 4.72416f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -8.61003f, 15.483f, 20.4158f, 4.69854f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -27.9583f, 14.8875f, 20.4428f, 4.77865f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -15.61003f, 15.483f, 20.4158f, 4.69854f); + t->AddNPCPassengerInInstance(NPC_GB_SKYBREAKER_MORTAR_SOLDIER, -20.9583f, 14.8875f, 20.4428f, 4.77865f); + } + } + + if(Transport* th = sMapMgr->LoadTransportInMap(instance,GO_ORGRIM_S_HAMMER_HORDE_ICC, 77800)) + { + th->AddNPCPassengerInInstance(NPC_GB_ORGRIMS_HAMMER, 1.845810f, 1.268872f, 34.526218f, 1.5890f); + th->AddNPCPassengerInInstance(NPC_GB_HIGH_OVERLORD_SAURFANG, 37.18615f, 0.00016f, 36.78849f, 3.13683f); + th->AddNPCPassengerInInstance(NPC_GB_MURADIN_BRONZEBEARD_NOT_VISUAL, -7.09684f, 30.582f, 34.5013f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_INVISIBLE_STALKER, 37.30764f, -0.143823f, 36.7936f, 3.13683f); + th->AddNPCPassengerInInstance(NPC_GB_ZAFOD_BOOMBOX, 35.18615f, 15.30652f, 37.64343f, 3.05033f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -13.19547f, -27.160213f, 35.47252f, 3.10672f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -18.33902f, -25.230491f, 33.04052f, 3.00672f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -60.1251f, -1.27014f, 42.8335f, 5.16073f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -48.2651f, 16.78034f, 34.2515f, 0.04292f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -14.8356f, 27.931688f, 33.363f, 1.73231f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 10.2702f, 20.62966f, 35.37483f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 39.32459f, 14.50176f, 36.88428f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 46.17223f, -6.638763f, 37.35444f, 1.32f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 27.4456f, -13.397498f, 36.34746f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, 18.16184f, 1.37897f, 35.31705f, 1.6f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -18.11516f, -0.196236f, 45.15709f, 2.9f); + th->AddNPCPassengerInInstance(NPC_GB_GUNSHIP_HULL, -18.11844f, -0.19624f, 49.18192f, 1.6f); + + if(instance->ToInstanceMap()->GetMaxPlayers() == 10) + { + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, 22.6225f, 28.9309f, 36.3929f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, -21.7509f, 29.4207f, 34.2588f, 1.53591f); + } else { + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, 22.6225f, 28.9309f, 36.3929f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, 9.87745f, 30.5047f, 35.7147f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, -7.09684f, 30.582f, 34.5013f, 1.53591f); + th->AddNPCPassengerInInstance(NPC_GB_HORDE_CANON, -21.7509f, 29.4207f, 34.2588f, 1.53591f); + } + } + } + isPrepared = true; + } + + protected: std::set ColdflameJetGUIDs; uint64 LadyDeathwisperElevatorGUID; + // Gunship battle + uint32 FirstSquadState; + uint32 SecondSquadState; + uint64 SkybreakerBossGUID; + uint64 OrgrimmarBossGUID; + uint64 DeathbringerSaurfangGbGUID; + uint64 MuradinBronzebeardGbGUID; + uint64 DeathbringerSaurfangNotVisualGUID; + uint64 MuradinBronzebeardNotVisualGUID; + uint64 GbBattleMageGUID; uint64 DeathbringerSaurfangGUID; uint64 DeathbringerSaurfangDoorGUID; uint64 DeathbringerSaurfangEventGUID; // Muradin Bronzebeard or High Overlord Saurfang @@ -1253,8 +1652,16 @@ class instance_icecrown_citadel : public InstanceMapScript uint64 uiEdgeDestroyWarning; uint64 uilavaman; uint64 uihangingman; + uint64 GunShipControllerGUID; + uint64 GBMuradinGUID; + uint64 GBSaurfangGUID; + uint64 GBSkybreakerGUID; + uint64 GBOgrimsHammerGUID; + uint64 SindragosasWardGUID; + uint64 SindragosaGauntletDoorGUID; bool IsNeckDeep; bool IsNecroticStack; + uint32 SpireSquadState; uint32 TeamInInstance; uint32 BloodQuickeningTimer; uint32 ColdflameJetsState; @@ -1263,11 +1670,14 @@ class instance_icecrown_citadel : public InstanceMapScript std::set RimefangTrash; uint32 BloodQuickeningState; uint32 HeroicAttempts; + uint32 SindragosaGauntlet; uint16 BloodQuickeningMinutes; bool IsBonedEligible; bool IsOozeDanceEligible; bool IsNauseaEligible; bool IsOrbWhispererEligible; + bool ZoneBuffState; + bool isPrepared; }; InstanceScript* GetInstanceScript(InstanceMap* map) const diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp index 7e5732a..6559b4b 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp index ecb1723..4e32106 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp index b3368bd..1533412 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp index 68e4a68..b11a209 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -38,7 +38,7 @@ enum Events EVENT_SUMMON }; -#define EMOTE_NEARBY " spots a nearby zombie to devour!" +#define EMOTE_NEARBY " repère un zombie à proximité pour le dévorer!" class boss_gluth : public CreatureScript { @@ -171,4 +171,4 @@ class boss_gluth : public CreatureScript void AddSC_boss_gluth() { new boss_gluth; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index 7bbb654..f87f6e0 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -166,8 +166,12 @@ class boss_gothik : public CreatureScript me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_DISABLE_MOVE); me->SetReactState(REACT_PASSIVE); - if(instance) + if (instance) + { instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); + instance->SetData(DATA_GOTHIK_ROOM, GO_STATE_ACTIVE); + instance->SetData(DATA_GOTHIK_PASSAGE, GO_STATE_READY); + } _Reset(); mergedSides = false; phaseTwo = false; @@ -197,8 +201,12 @@ class boss_gothik : public CreatureScript events.ScheduleEvent(EVENT_SUMMON, 30000); DoTeleportTo(PosPlatform); DoScriptText(SAY_SPEECH, me); - if(instance) + if (instance) + { instance->SetData(DATA_GOTHIK_GATE, GO_STATE_READY); + instance->SetData(DATA_GOTHIK_ROOM, GO_STATE_READY); + instance->SetData(DATA_GOTHIK_PASSAGE, GO_STATE_READY); + } } void JustSummoned(Creature* pSummoned) @@ -231,8 +239,12 @@ class boss_gothik : public CreatureScript DeadTriggerGUID.clear(); _JustDied(); DoScriptText(SAY_DEATH, me); - if(instance) + if (instance) + { instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); + instance->SetData(DATA_GOTHIK_ROOM, GO_STATE_ACTIVE); + instance->SetData(DATA_GOTHIK_PASSAGE, GO_STATE_ACTIVE); + } } void DoGothikSummon(uint32 entry) @@ -364,10 +376,10 @@ class boss_gothik : public CreatureScript switch(spell->Id) { case SPELL_INFORM_DEAD_TRAINEE: - DoSummon(MOB_DEAD_TRAINEE, pTarget, 0); + DoSummon(MOB_DEAD_TRAINEE, pTarget, 1.0f); break; case SPELL_INFORM_DEAD_KNIGHT: - DoSummon(MOB_DEAD_KNIGHT, pTarget, 0); + DoSummon(MOB_DEAD_KNIGHT, pTarget, 1.0f); break; case SPELL_INFORM_DEAD_RIDER: DoSummon(MOB_DEAD_RIDER, pTarget, 1.0f); @@ -580,4 +592,4 @@ void AddSC_boss_gothik() { new boss_gothik; new mob_gothik_minion; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp index ddbe33b..7353c79 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp index 208f65d..c8e5657 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 3612542..840afd6 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp index b9dbf85..58bb364 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp index 8caf487..1b4a4d6 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp index 30c4b9d..0fa3bde 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp index ae246df..5bdfdfe 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp index 96fe49e..4b9a5da 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp index 31a5f2e..612294a 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index 90dac42..07d0f5b 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp index 258ef7f..6e1399c 100644 --- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp +++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -57,7 +57,6 @@ enum eEnums { GO_HORSEMEN_CHEST_HERO = 193426, GO_HORSEMEN_CHEST = 181366, - GO_GOTHIK_GATE = 181170, GO_KELTHUZAD_PORTAL01 = 181402, GO_KELTHUZAD_PORTAL02 = 181403, GO_KELTHUZAD_PORTAL03 = 181404, @@ -75,6 +74,7 @@ enum eEnums GO_ROOM_GROBBULUS = 181123, GO_PASSAGE_GLUTH = 181120, GO_ROOM_THADDIUS = 181121, + GO_GATE_GOTHIK = 181170, GO_ROOM_GOTHIK = 181124, GO_PASSAGE_GOTHIK = 181125, GO_ROOM_HORSEMEN = 181119, @@ -86,7 +86,7 @@ enum eEnums enum eDoors { - DOOR_ROOM_ANUBREKHAN = 0, + DOOR_ROOM_ANUBREKHAN = 0, DOOR_PASSAGE_ANUBREKHAN, DOOR_PASSAGE_FAERLINA, DOOR_ROOM_MAEXXNA, @@ -159,7 +159,6 @@ class instance_naxxramas : public InstanceMapScript uint32 m_PlayerDeathCount; uint32 m_HeiganPlayerDeathCount; uint32 SlimeCheckTimer; - uint64 GothikGateGUID; uint64 HorsemenChestGUID; uint64 SapphironGUID; uint64 uiFaerlina; @@ -181,21 +180,27 @@ class instance_naxxramas : public InstanceMapScript uint64 FaerlinaDoor; uint64 MaexxnaDoor; uint64 ThaddiusDoor; - uint64 GothicDoor; + uint64 GothikGateGUID; + uint64 GothicRoomGUID; + uint64 GothicPassageGUID; uint64 NothDoor_Out; uint64 HeiganDoor; uint64 HorsemenDoor; uint64 uiPortals[4]; uint64 uiNaxxDoors[MAX_DOOR_NAXX]; - GOState gothikDoorState; + GOState gothikGateState; + GOState gothicRoomState; + GOState gothicPassageState; time_t minHorsemenDiedTime; time_t maxHorsemenDiedTime; void Initialize() { memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - gothikDoorState = GO_STATE_ACTIVE; + gothikGateState = GO_STATE_ACTIVE; + gothicRoomState = GO_STATE_READY; + gothicPassageState = GO_STATE_READY; SlimeCheckTimer = 1000; } @@ -295,9 +300,15 @@ class instance_naxxramas : public InstanceMapScript case GO_PASSAGE_HEIGAN: uiNaxxDoors[DOOR_PASSAGE_HEIGAN] = go->GetGUID(); break; + case GO_GATE_GOTHIK: + GothikGateGUID = go->GetGUID(); + break; + case GO_ROOM_GOTHIK: + GothicRoomGUID = go->GetGUID(); + break; case GO_PASSAGE_GOTHIK: - GothicDoor = go->GetGUID(); - break; + GothicPassageGUID = go->GetGUID(); + break; case GO_ROOM_HORSEMEN: HorsemenDoor = go->GetGUID(); break; @@ -429,10 +440,20 @@ class instance_naxxramas : public InstanceMapScript HeiganErupt(value); break; case DATA_GOTHIK_GATE: - if(GameObject* gothikGate = instance->GetGameObject(GothikGateGUID)) - gothikGate->SetGoState(GOState(value)); - gothikDoorState = GOState(value); - break; + if(GameObject* gothicGate = instance->GetGameObject(GothikGateGUID)) + gothicGate->SetGoState(GOState(value)); + gothikGateState = GOState(value); + break; + case DATA_GOTHIK_ROOM: + if(GameObject* gothikRoom = instance->GetGameObject(GothicRoomGUID)) + gothikRoom->SetGoState(GOState(value)); + gothicRoomState = GOState(value); + break; + case DATA_GOTHIK_PASSAGE: + if(GameObject* gothikPassage = instance->GetGameObject(GothicPassageGUID)) + gothikPassage->SetGoState(GOState(value)); + gothicPassageState = GOState(value); + break; case DATA_HORSEMEN0: case DATA_HORSEMEN1: case DATA_HORSEMEN2: @@ -579,17 +600,17 @@ class instance_naxxramas : public InstanceMapScript if(GameObject* pDoors = instance->GetGameObject(HeiganDoor)) pDoors->SetGoState(GO_STATE_ACTIVE); } - + if(id == BOSS_RAZUVIOUS && state == DONE) { - if(GameObject* pDoors = instance->GetGameObject(GothicDoor)) + if(GameObject* pDoors = instance->GetGameObject(GothicRoomGUID)) pDoors->SetGoState(GO_STATE_ACTIVE); } - + if(id == BOSS_GOTHIK && state == DONE) { if(GameObject* pDoors = instance->GetGameObject(HorsemenDoor)) - pDoors->SetGoState(GO_STATE_ACTIVE); + pDoors->SetGoState(GO_STATE_ACTIVE); } if(id == BOSS_HORSEMEN && state == DONE) diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h index a3f95a1..9273d71 100644 --- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h +++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -36,11 +36,13 @@ enum Data { DATA_HEIGAN_ERUPT = 0, DATA_GOTHIK_GATE = 1, - DATA_SAPPHIRON_BIRTH = 2, - DATA_HORSEMEN0 = 3, - DATA_HORSEMEN1 = 4, - DATA_HORSEMEN2 = 5, - DATA_HORSEMEN3 = 6, + DATA_GOTHIK_ROOM = 2, + DATA_GOTHIK_PASSAGE = 3, + DATA_SAPPHIRON_BIRTH = 4, + DATA_HORSEMEN0 = 5, + DATA_HORSEMEN1 = 6, + DATA_HORSEMEN2 = 7, + DATA_HORSEMEN3 = 8, DATA_GO_ROOM_HEIGAN = 15, DATA_GO_PASSAGE_HEIGAN = 16, DATA_PLAYER_DEATHS = 17 diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 8e394c1..de5fb85 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h index e1cb836..d071bf8 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp index c663eb4..4ac5d1d 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp index e8276fa..6f8d5c4 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp index f5cdbf1..205ab2f 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp index a93f8eb..6497365 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp index 615dff8..ea6dfd5 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Nexus/commander_kolurg.cpp b/src/server/scripts/Northrend/Nexus/Nexus/commander_kolurg.cpp index d7ad34e..220d78d 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/commander_kolurg.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/commander_kolurg.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Nexus/commander_stoutbeard.cpp b/src/server/scripts/Northrend/Nexus/Nexus/commander_stoutbeard.cpp index 29887de..a532f8c 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/commander_stoutbeard.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/commander_stoutbeard.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp index 7056159..2e6fddf 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h index b88f106..d3dee59 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h +++ b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp index a8a3334..d147e71 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp index 1cb17b7..315edb5 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp index fd7c111..9553bee 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp index de089e6..011c4c3 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp index bcd1df2..f89ab4d 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp index f6a58ea..acb9407 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -12,13 +12,13 @@ #include "ScriptPCH.h" #include "oculus.h" -#define GOSSIP_ITEM_DRAKES "So where do we go from here?" -#define GOSSIP_ITEM_BELGARISTRASZ1 "I want to fly on the wings of the Red Flight" -#define GOSSIP_ITEM_BELGARISTRASZ2 "What abilities do Ruby Drakes have?" -#define GOSSIP_ITEM_VERDISA1 "I want to fly on the wings of the Green Flight" -#define GOSSIP_ITEM_VERDISA2 "What abilities do Emerald Drakes have?" -#define GOSSIP_ITEM_ETERNOS1 "I want to fly on the wings of the Bronze Flight" -#define GOSSIP_ITEM_ETERNOS2 "What abilities do Amber Drakes have?" +#define GOSSIP_ITEM_DRAKES "Alors, où allons-nous maintenant ?" +#define GOSSIP_ITEM_BELGARISTRASZ1 "Je veux voler sur les ailes d'un vol Rouge" +#define GOSSIP_ITEM_BELGARISTRASZ2 "Quelles sont les aptitudes que possèdent les Dragons de ruby ? (Tank)" +#define GOSSIP_ITEM_VERDISA1 "Je veux voler sur les ailes d'un vol vert" +#define GOSSIP_ITEM_VERDISA2 "Quelles sont les aptitudes que possèdent les Dragons d'émeraude ? (Healer)" +#define GOSSIP_ITEM_ETERNOS1 "Je veux voler sur les ailes d'un vol de bronze" +#define GOSSIP_ITEM_ETERNOS2 "Quelles sont les aptitudes que possèdent les Dragons de bronze ? (DPS)" #define HAS_ESSENCE(a) ((a)->HasItemCount(ITEM_EMERALD_ESSENCE, 1) || (a)->HasItemCount(ITEM_AMBER_ESSENCE, 1) || (a)->HasItemCount(ITEM_RUBY_ESSENCE, 1)) @@ -169,4 +169,4 @@ class npc_oculus_drake : public CreatureScript void AddSC_oculus() { new npc_oculus_drake; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h index e380345..873ec28 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp index a733ffb..226fd18 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp index d1d245c..c9e4436 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp index b02d99b..d20fc40 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp index 4a4c380..9bf75cf 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h index 996f967..e53a000 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp index ace8c11..c4cab37 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp index 23fc42b..59d8bfe 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 e603d91..15e1f8a 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 @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp index f4984d5..799f0e3 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 765ea4c..f064841 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -108,8 +108,8 @@ enum Achievements ACHIEV_BRANN_SPANKIN_NEW = 2154 }; -#define GOSSIP_ITEM_START "Brann, it would be our honor!" -#define GOSSIP_ITEM_PROGRESS "Let's move Brann, enough of the history lessons!" +#define GOSSIP_ITEM_START "Brann, se serait un honneur !" +#define GOSSIP_ITEM_PROGRESS "Allons-y Brann, assez de leçons d'histoire !" static Position SpawnLocations[]= { @@ -963,4 +963,4 @@ void AddSC_halls_of_stone() new mob_dark_matter; new mob_searing_gaze; new achievement_brann_spankin_new; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h index a38ca65..ed45786 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp index b3a483e..b4c4812 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp index f70c681..10225f8 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp index 8c38aa6..90d4bc0 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -125,7 +125,7 @@ enum Data DATA_CANT_DO_THAT }; -#define EMOTE_OVERLOAD "Stormcaller Brundir begins to Overload!" // Move it to DB +#define EMOTE_OVERLOAD "Mande-foudre Brundir Lance Surcharge !" // Move it to DB #define FLOOR_Z 427.28f #define FINAL_FLIGHT_Z 435.0f diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp index 268df2d..50e7148 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 80fb69d..4fb3018 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -118,9 +118,9 @@ enum Vehicles VEHICLE_DEMOLISHER = 33109, }; -#define EMOTE_PURSUE "Flame Leviathan pursues $N." -#define EMOTE_OVERLOAD "Flame Leviathan's circuits overloaded." -#define EMOTE_REPAIR "Automatic repair sequence initiated." +#define EMOTE_PURSUE "Flame Leviathan poursuit $N." +#define EMOTE_OVERLOAD "Les Circuits de Flame Leviathan sont surchargé." +#define EMOTE_REPAIR "Séquence de réparation automatique lancé." #define DATA_SHUTOUT 29112912 // 2911, 2912 are achievement IDs #define DATA_UNBROKEN 29052906 // 2905, 2906 are achievement IDs #define DATA_ORBIT_ACHIEVEMENTS 1 @@ -1086,8 +1086,8 @@ class npc_freya_ward_summon : public CreatureScript }; //npc lore keeper -#define GOSSIP_ITEM_1 "Activate secondary defensive systems" -#define GOSSIP_ITEM_2 "Confirmed" +#define GOSSIP_ITEM_1 "Activer les systèmes défensifs secondaire" +#define GOSSIP_ITEM_2 "Confirmer" class npc_lorekeeper : public CreatureScript { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index 2e13391..6485506 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp index 67922da..ecb7bcd 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp index 809f1ce..5c2e784 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp index a739102..eec13cf 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index 7f23680..0c03827 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index 46cca9a..7753f9b 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -37,7 +37,7 @@ enum Yells SAY_YS_HELP = -1603259 }; -#define EMOTE_LEVIATHAN "Leviathan MK II begins to cast Plasma Blast!" +#define EMOTE_LEVIATHAN "Leviathan MK II commence à lancer Explosion de plasma!" enum Spells { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index 0e96347..e59a9f0 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -121,7 +121,7 @@ enum Events }; #define GROUND_Z 391.517f -#define GOSSIP_ITEM_1 "Activate Harpoons!" +#define GOSSIP_ITEM_1 "Activer les Harpons!" #define DATA_QUICK_SHAVE 29192921 // 2919, 2921 are achievement IDs #define DATA_IRON_DWARF_MEDIUM_RARE 29232924 @@ -1118,4 +1118,4 @@ void AddSC_boss_razorscale() new spell_razorscale_flame_breath; new achievement_iron_dwarf_medium_rare; new achievement_quick_shave; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index 965012f..91d1f0d 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -73,8 +73,8 @@ enum Yells SAY_YS_HELP = -1603287 }; -#define EMOTE_BARRIER "Runic Colossus surrounds itself with a crackling Runic Barrier!" -#define EMOTE_MIGHT "Ancient Rune Giant fortifies nearby allies with runic might!" +#define EMOTE_BARRIER "Le Colosse runique s'entoure d'une barrière crépitante runique!" +#define EMOTE_MIGHT "L'Ancien géant runique fortifie les alliés à proximité avec la puissance runique!" // Thorim Pre-Phase Adds enum PreAdds diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index a2b152d..ad70a6e 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp index b6fab7f..26cdb13 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index ac822e1..56b059d 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h index a5d9c56..8735629 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar_teleporter.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar_teleporter.cpp index 65f77d4..0cec10f 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar_teleporter.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar_teleporter.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -97,27 +97,27 @@ class ulduar_teleporter : public GameObjectScript bool OnGossipHello(Player* player, GameObject* gameObject) { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Expedition Base Camp", GOSSIP_SENDER_MAIN, BASE_CAMP); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Téléportation vers le Camp de base de l'Expédition.", GOSSIP_SENDER_MAIN, BASE_CAMP); if(InstanceScript* instance = gameObject->GetInstanceScript()) { if(instance->GetData(DATA_COLOSSUS) >= 2 || player->isGameMaster()) //count of 2 collossus death - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Formation Grounds", GOSSIP_SENDER_MAIN, GROUNDS); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Téléportation vers le Champ d'Entraînement.", GOSSIP_SENDER_MAIN, GROUNDS); if(instance->GetBossState(BOSS_LEVIATHAN) == DONE || player->isGameMaster()) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Colossal Forge", GOSSIP_SENDER_MAIN, FORGE); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Téléportation vers la Forge Colossale.", GOSSIP_SENDER_MAIN, FORGE); if(instance->GetBossState(BOSS_XT002) == DONE || player->isGameMaster()) { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Scrapyard", GOSSIP_SENDER_MAIN, SCRAPYARD); - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Antechamber of Ulduar", GOSSIP_SENDER_MAIN, ANTECHAMBER); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Téléportation vers la Ferraillerie.", GOSSIP_SENDER_MAIN, SCRAPYARD); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Téléportation vers L'Antichambre d'Ulduar.", GOSSIP_SENDER_MAIN, ANTECHAMBER); } if(instance->GetBossState(BOSS_KOLOGARN) == DONE || player->isGameMaster()) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Shattered Walkway", GOSSIP_SENDER_MAIN, WALKWAY); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Téléportation vers le Passage Brisé.", GOSSIP_SENDER_MAIN, WALKWAY); if(instance->GetBossState(BOSS_AURIAYA) == DONE || player->isGameMaster()) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Conservatory of Life", GOSSIP_SENDER_MAIN, CONSERVATORY); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Téléportation vers le Conservatoire de Vie.", GOSSIP_SENDER_MAIN, CONSERVATORY); if(instance->GetBossState(BOSS_MIMIRON) == FAIL || instance->GetBossState(BOSS_MIMIRON) == DONE || player->isGameMaster()) { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Spark of Imagination", GOSSIP_SENDER_MAIN, SPARK_IMAGINATION); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Téléportation vers l'étincelle de l'Imagination", GOSSIP_SENDER_MAIN, SPARK_IMAGINATION); if(instance->GetBossState(BOSS_VEZAX) == DONE || player->isGameMaster()) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Descent into Madness", GOSSIP_SENDER_MAIN, DESCENT_MADNESS); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Téléportation vers la Descente dans la Folie", GOSSIP_SENDER_MAIN, DESCENT_MADNESS); } } 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 b06b27d..533e31d 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 @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index 9bbfe60..19f2b29 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp index 22ae86c..84c44ef 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp index 1e2cbd4..3cea2bd 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp index b22e03c..8d81422 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h index 92dfdc0..2df6945 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp index dbc7204..65f3b66 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index a1d12fd..921c1b5 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -312,7 +312,7 @@ class boss_skadi : public CreatureScript me->AI()->AttackStart(pTarget); me->GetMotionMaster()->MoveChase(pTarget); } - me->GetMotionMaster()->MoveJump(Location[4].GetPositionX(), Location[4].GetPositionY(), Location[4].GetPositionZ(), 5.0f, 10.0f); + me->GetMotionMaster()->MoveJump(Location[4].GetPositionX(), Location[4].GetPositionY(), Location[4].GetPositionZ(), 15.0f, 15.0f); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE); DoScriptText(SAY_DRAKE_DEATH, me); m_uiCrushTimer = 10000; @@ -594,4 +594,4 @@ void AddSC_boss_skadi() { new boss_skadi; new go_harpoon_launcher; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp index 282fa9b..fdc6eff 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp index 0f1c7ed..7c1c527 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_pinnacle.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_pinnacle.cpp index e11a1e3..d506670 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_pinnacle.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_pinnacle.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h index c4e31ce..0a5be4e 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp index 043b8e6..6ed2201 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -29,7 +29,7 @@ #define ARCHAVON_WARDER 32353 //npc 32353 //Yell -#define SAY_LEAP "Archavon the Stone Watcher lunges for $N!" //$N should be the target +#define SAY_LEAP "Archavon le gardien des pierres se précipite sur $N!" //$N should be the target enum Events { diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp index 4d81640..1d9b558 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp index ae4c824..a33c735 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp index a0cd51a..a2a36c0 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp index 4d78293..676d429 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h b/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h index 368bd06..76209c5 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h +++ b/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index 275ee06..8a0f8b5 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index 62579ee..d812728 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index 4e1744e..c76bd29 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index e19eb7a..135737b 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 142de61..782ec5b 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index ae39d0f..8a54e2a 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index 9a723de..edbf244 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index b91d605..ac01989 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -15,9 +15,9 @@ #include "GroupReference.h" #include "Group.h" -#define GOSSIP_START_EVENT "Get your people to safety, we'll keep the Blue Dragonflight's forces at bay." -#define GOSSIP_ITEM_1 "Activate the crystals when we get in trouble, right" -#define GOSSIP_I_WANT_IN "I'm not fighting, so send me in now!" +#define GOSSIP_START_EVENT "Obtenez la sécurité pour votre peuple, nous allons garder les forces du Vol Bleu à distance." +#define GOSSIP_ITEM_1 "Activer les cristaux quand nous serons en difficulté, d'accord" +#define GOSSIP_I_WANT_IN "Je ne me bats pas, alors envoyez-moi dès maintenant!" #define SPAWN_TIME 20000 enum PortalCreatures diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.h b/src/server/scripts/Northrend/VioletHold/violet_hold.h index 60a3c7d..0bc8282 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.h +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/borean_tundra.cpp b/src/server/scripts/Northrend/borean_tundra.cpp index 47ddb9f..65dcff4 100644 --- a/src/server/scripts/Northrend/borean_tundra.cpp +++ b/src/server/scripts/Northrend/borean_tundra.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -168,7 +168,7 @@ enum eKeristrasza SPELL_TELEPORT_TO_SARAGOSA = 46772 }; -#define GOSSIP_HELLO_KERI "I am prepared to face Saragosa!" +#define GOSSIP_HELLO_KERI "Je suis prêt à affronter Saragosa!" class npc_keristrasza : public CreatureScript { @@ -245,7 +245,7 @@ class npc_corastrasza : public CreatureScript } }; -#define GOSSIP_ITEM_I "" +#define GOSSIP_ITEM_I "" enum eIruk { @@ -874,7 +874,7 @@ enum eThassarian SAY_THASSARIAN_7 = -1571023, }; -#define GOSSIP_ITEM_T "Let's do this, Thassarian. It's now or never." +#define GOSSIP_ITEM_T "Faisons-le, Thassarian. C'est maintenant ou jamais." class npc_thassarian : public CreatureScript { @@ -2197,9 +2197,9 @@ enum eHiddenCultist SAY_HIDDEN_CULTIST_4 = -1571047 }; -const char* GOSSIP_ITEM_TOM_HEGGER = "What do you know about the Cult of the Damned?"; -const char* GOSSIP_ITEM_GUARD_MITCHELLS = "How long have you worked for the Cult of the Damned?"; -const char* GOSSIP_ITEM_SALTY_JOHN_THORPE = "I have a reason to believe you're involved in the cultist activity"; +const char* GOSSIP_ITEM_TOM_HEGGER = "Que savez-vous sur le Culte des damnés ?"; +const char* GOSSIP_ITEM_GUARD_MITCHELLS = "Combien de temps avez-vous travaillé pour le Culte des damnés ?"; +const char* GOSSIP_ITEM_SALTY_JOHN_THORPE = "J'ai des raisons de croire que vous êtes impliqué dans l'activité du Culte"; class npc_hidden_cultist : public CreatureScript { diff --git a/src/server/scripts/Northrend/crystalsong_forest.cpp b/src/server/scripts/Northrend/crystalsong_forest.cpp index 7b42b5c..ec15690 100644 --- a/src/server/scripts/Northrend/crystalsong_forest.cpp +++ b/src/server/scripts/Northrend/crystalsong_forest.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/dalaran.cpp b/src/server/scripts/Northrend/dalaran.cpp index 0ca1f58..cff269c 100644 --- a/src/server/scripts/Northrend/dalaran.cpp +++ b/src/server/scripts/Northrend/dalaran.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -101,7 +101,7 @@ enum eHiraSnowdawn SPELL_COLD_WEATHER_FLYING = 54197 }; -#define GOSSIP_TEXT_TRAIN_HIRA "I seek training to ride a steed." +#define GOSSIP_TEXT_TRAIN_HIRA "Je souhaite un entrainement pour monter à cheval." class npc_hira_snowdawn : public CreatureScript { diff --git a/src/server/scripts/Northrend/dragonblight.cpp b/src/server/scripts/Northrend/dragonblight.cpp index f8c2347..bb62dfb 100644 --- a/src/server/scripts/Northrend/dragonblight.cpp +++ b/src/server/scripts/Northrend/dragonblight.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -19,7 +19,7 @@ enum eEnums MOVIE_ID_GATES = 14 }; -#define GOSSIP_ITEM_WHAT_HAPPENED "Alexstrasza, can you show me what happened here?" +#define GOSSIP_ITEM_WHAT_HAPPENED "Alexstrasza, pouvez-vous me montrer ce qui s'est passé ici ?" class npc_alexstrasza_wr_gate : public CreatureScript { @@ -367,4 +367,4 @@ void AddSC_dragonblight() new npc_rojections_and_plans_Kill_credit_bunny; new npc_wartook_iceborn; new npc_reclusive_runemaster; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/grizzly_hills.cpp b/src/server/scripts/Northrend/grizzly_hills.cpp index e07a016..3298da0 100644 --- a/src/server/scripts/Northrend/grizzly_hills.cpp +++ b/src/server/scripts/Northrend/grizzly_hills.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -12,11 +12,11 @@ #include "ScriptPCH.h" #include "ScriptedEscortAI.h" -#define GOSSIP_ITEM1 "You're free to go Orsonn, but first tell me what's wrong with the furbolg." -#define GOSSIP_ITEM2 "What happened then?" -#define GOSSIP_ITEM3 "Thank you, Son of Ursoc. I'll see what can be done." -#define GOSSIP_ITEM4 "Who was this stranger?" -#define GOSSIP_ITEM5 "Thank you, Kodian. I'll do what I can." +#define GOSSIP_ITEM1 "Vous Etes libre de partir Orsonn, mais d'abord dite moi quel est le problème avec les furbolgs." +#define GOSSIP_ITEM2 "Qu'est-il arrivé alors ?" +#define GOSSIP_ITEM3 "Je vous remercie, Fils de Ursoc. Je vais voir ce qu'on peut faire." +#define GOSSIP_ITEM4 "Qui était cet étranger ?" +#define GOSSIP_ITEM5 "Je vous remercie, Kodian. Je vais faire ce que je peux." enum eEnums { diff --git a/src/server/scripts/Northrend/howling_fjord.cpp b/src/server/scripts/Northrend/howling_fjord.cpp index 8c3a78d..36527c5 100644 --- a/src/server/scripts/Northrend/howling_fjord.cpp +++ b/src/server/scripts/Northrend/howling_fjord.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -315,8 +315,8 @@ class npc_plaguehound_tracker : public CreatureScript } }; -#define GOSSIP_RAZAEL_REPORT "High Executor Anselm wants a report on the situation." -#define GOSSIP_LYANA_REPORT "High Executor Anselm requests your report." +#define GOSSIP_RAZAEL_REPORT "Le Grand exécuteur Anselm veut un rapport sur la situation." +#define GOSSIP_LYANA_REPORT "Le Grand exécuteur Anselm demandes votre rapport." enum eRazael { @@ -382,7 +382,7 @@ class npc_razael_and_lyana : public CreatureScript } }; -#define GOSSIP_ITEM_MG_I "Walt sent me to pick up some dark iron ingots." +#define GOSSIP_ITEM_MG_I "Walt m'a envoyé pour prendre quelques lingots de fer noir." #define GOSSIP_ITEM_MG_II "Yarp." enum eMcGoyver @@ -639,4 +639,4 @@ void AddSC_howling_fjord() new item_vrykul_insult; new npc_attracted_reef_bull; new spell_anuniaqs_net; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/icecrown.cpp b/src/server/scripts/Northrend/icecrown.cpp index 54fbca3..7317ae5 100644 --- a/src/server/scripts/Northrend/icecrown.cpp +++ b/src/server/scripts/Northrend/icecrown.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -136,9 +136,9 @@ enum eSoldier QUEST_THE_BROKEN_FRONT_H = 13228, }; -#define GOSSIP_ITEM_DYING_SOLDIER "Travel well, hero of the Alliance!" -#define GOSSIP_ITEM_DYING_SOLDIER1 "Stay with me, friend. I must know what happened here." -#define GOSSIP_ITEM_DYING_BERSERKER "Stay with me, friend. I must know what happened here." +#define GOSSIP_ITEM_DYING_SOLDIER "Bon Voyage, héros de l'Alliance!" +#define GOSSIP_ITEM_DYING_SOLDIER1 "Reste avec moi, mon ami. Je dois savoir ce qui s'est passé ici." +#define GOSSIP_ITEM_DYING_BERSERKER "Reste avec moi, mon ami. Je dois savoir ce qui s'est passé ici." class npc_dying_soldier : public CreatureScript { @@ -362,13 +362,13 @@ class npc_dying_berserker : public CreatureScript } }; -#define GOSSIP_ARETE_ITEM1 "Lord-Commander, I would hear your tale." -#define GOSSIP_ARETE_ITEM2 "" -#define GOSSIP_ARETE_ITEM3 "I thought that they now called themselves the Scarlet Onslaught?" -#define GOSSIP_ARETE_ITEM4 "Where did the grand admiral go?" -#define GOSSIP_ARETE_ITEM5 "That's fine. When do I start?" -#define GOSSIP_ARETE_ITEM6 "Let's finish this!" -#define GOSSIP_ARETE_ITEM7 "That's quite a tale, Lord-Commander." +#define GOSSIP_ARETE_ITEM1 "Seigneur-commandant, je voudrais entendre votre histoire." +#define GOSSIP_ARETE_ITEM2 "" +#define GOSSIP_ARETE_ITEM3 "Je pensais qu'ils s'appelaient désormais eux-mêmes l'Assaut écarlate ?" +#define GOSSIP_ARETE_ITEM4 "Où est aller le grand amiral ?" +#define GOSSIP_ARETE_ITEM5 "C'est très bien. Quand dois-je commencer ?" +#define GOSSIP_ARETE_ITEM6 "Finissons-en !" +#define GOSSIP_ARETE_ITEM7 "C'est tout à fait un conte, Seigneur-commandant." enum eArete { @@ -481,8 +481,8 @@ enum eSquireDavid GOSSIP_TEXTID_SQUIRE = 14407 }; -#define GOSSIP_SQUIRE_ITEM_1 "I am ready to fight!" -#define GOSSIP_SQUIRE_ITEM_2 "How do the Argent Crusader raiders fight?" +#define GOSSIP_SQUIRE_ITEM_1 "Je suis prêt à me battre !" +#define GOSSIP_SQUIRE_ITEM_2 "Comment les Raiders de la Croisade d'Argent se battent ils ?" class npc_squire_david : public CreatureScript { @@ -525,7 +525,7 @@ struct QUEST_VALIANTS_CHALLENGE }; QUEST_VALIANTS_CHALLENGE m_quest[] = {13727, 13728, 13729, 13731, 13726, 13725, 13713, 13723, 13724, 13699}; -#define GOSSIP_SQUIRE_ITEM_1 "I am ready to fight!" +#define GOSSIP_SQUIRE_ITEM_1 "Je suis prêt à me battre !" class npc_squire_danny : public CreatureScript { @@ -1128,7 +1128,7 @@ enum evaliants GOSSIP_TEXTID_VALIANTS = 14407 }; -#define GOSSIP_VALIANTS_ITEM "I am ready to fight!" +#define GOSSIP_VALIANTS_ITEM "Je suis prêt à me battre !" enum Says { @@ -1315,7 +1315,7 @@ enum Champions GOSSIP_TEXTID_CHAMPIONS = 14407 }; -#define GOSSIP_CHAMPIONS_ITEM "I am ready to fight!" +#define GOSSIP_CHAMPIONS_ITEM "Je suis prêt à me battre !" enum Say { @@ -1469,10 +1469,10 @@ const Position ScourgePos = 6460.16f, 403.45f, 490.07f, 2.700f //Scourge Spawn }; -#define SAY_PRE_1 "BY THE LIGHT! Those damned monsters! Look at what they've done to our people!" -#define SAY_PRE_2 "Burn it down, boys. Burn it all down." -#define SAY_START "Let 'em come. They'll pay for what they've done!" -#define YELL_FINISHED "We've done it, lads! We've taken the pinnacle from the Scourge! Report to Father Gustav at once and tell him the good news! We're gonna get to buildin' and settin' up! Go!" +#define SAY_PRE_1 "PAR LA LUMIÈRE! Ces maudits monstres! Regardez ce qu'ils ont fait à notre peuple!" +#define SAY_PRE_2 "Mettez le feu, les gars. Brûlez tout cela." +#define SAY_START "Laissez-les venir. Ils vont payer pour ce qu'ils ont fait!" +#define YELL_FINISHED "Nous avons réussi, les gars! Nous avons pris le sommet du Fléau! Faites un rapport au père Gustav, et dite-lui la bonne nouvelle! Nous arrivons à la construction et la mise en place! Aller!" // Script for Battle for Crusaders' Pinnacle Controller class npc_blessed_banner : public CreatureScript @@ -1780,4 +1780,4 @@ void AddSC_icecrown() new npc_champions; new npc_blessed_banner; new spell_flaming_spear_targeting; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/isle_of_conquest.cpp b/src/server/scripts/Northrend/isle_of_conquest.cpp index 8feff11..f9035f4 100644 --- a/src/server/scripts/Northrend/isle_of_conquest.cpp +++ b/src/server/scripts/Northrend/isle_of_conquest.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Northrend/sholazar_basin.cpp b/src/server/scripts/Northrend/sholazar_basin.cpp index 32b8b26..6813561 100644 --- a/src/server/scripts/Northrend/sholazar_basin.cpp +++ b/src/server/scripts/Northrend/sholazar_basin.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -12,8 +12,8 @@ #include "ScriptPCH.h" #include "ScriptedEscortAI.h" -#define GOSSIP_ITEM1 "I am ready to travel to your village now." -#define GOSSIP_ITEM2 "" +#define GOSSIP_ITEM1 "Je suis prêt à Voyage vers votre village maintenant." +#define GOSSIP_ITEM2 "" enum eRainspeaker { @@ -156,8 +156,8 @@ class npc_injured_rainspeaker_oracle : public CreatureScript } }; -#define GOSSIP_VEKJIK_ITEM1 "Shaman Vekjik, I have spoken with the big-tongues and they desire peace. I have brought this offering on their behalf." -#define GOSSIP_VEKJIK_ITEM2 "No no... I had no intentions of betraying your people. I was only defending myself. it was all a misunderstanding." +#define GOSSIP_VEKJIK_ITEM1 "Shaman Vekjik, j'ai parlé avec les grand-langues et ils veulent la paix. Je vous ai apporté cette offrande en leur nom." +#define GOSSIP_VEKJIK_ITEM2 "Non, non ... Je n'avais pas l'intention de trahir votre peuple. Je ne faisais que me défendre. Tout cela n'était qu'un malentendu." enum eVekjik { @@ -213,9 +213,9 @@ class npc_vekjik : public CreatureScript } }; -#define GOSSIP_ITEM_AOF1 "I want to stop the Scourge as much as you do. How can I help?" -#define GOSSIP_ITEM_AOF2 "You can trust me. I am no friend of the Lich King." -#define GOSSIP_ITEM_AOF3 "I will not fail." +#define GOSSIP_ITEM_AOF1 "Je veux arrêter le Fléau autant que vous. Comment puis-je vous aider ?" +#define GOSSIP_ITEM_AOF2 "Vous pouvez me faire confiance. Je ne suis pas un ami du Roi Liche." +#define GOSSIP_ITEM_AOF3 "Je n'y manquerai pas." enum eFreya { @@ -421,14 +421,14 @@ class npc_engineer_helice : public CreatureScript }; #define SAY_OFFER "Care to try Grimbooze Thunderbrew's new jungle punch?" -#define SAY_HEMET_1 "Aye, I'll try it." -#define SAY_HEMET_2 "That's exactly what I needed!" +#define SAY_HEMET_1 "Oui, je vais l'essayer." +#define SAY_HEMET_2 "C'est exactement ce dont j'avais besoin!" #define SAY_HEMET_3 "It's got my vote! That'll put hair on your chest like nothing else will." -#define SAY_HADRIUS_1 "I'm always up for something of Grimbooze's." -#define SAY_HADRIUS_2 "Well, so far, it tastes like something my wife would drink..." -#define SAY_HADRIUS_3 "Now, there's the kick I've come to expect from Grimbooze's drinks! I like it!" -#define SAY_TAMARA_1 "Sure!" -#define SAY_TAMARA_2 "Oh my..." +#define SAY_HADRIUS_1 "Je suis toujours partant pour quelque chose de Tristevin" +#define SAY_HADRIUS_2 "Eh bien, jusqu'ici, ça a le gout de quelques chose que ma femme voudrais boire..." +#define SAY_HADRIUS_3 "Maintenant, il a le coup j'en suis venu à attendre des boissons de Tristevin! J'aime ça!" +#define SAY_TAMARA_1 "Bien sûr!" +#define SAY_TAMARA_2 "Oh mon..." #define SAY_TAMARA_3 "Tastes like I'm drinking... engine degreaser!" enum utils @@ -559,9 +559,9 @@ class npc_jungle_punch_target : public CreatureScript } }; -#define GOSSIP_OPTION_ORANGE "Can you spare an orange?" -#define GOSSIP_OPTION_BANANAS "Have a spare bunch of bananas?" -#define GOSSIP_OPTION_PAPAYA "I could really use a papaya." +#define GOSSIP_OPTION_ORANGE "Pouvez-vous épargner une orange ?" +#define GOSSIP_OPTION_BANANAS "Avez-vous un bouquet de banane ?" +#define GOSSIP_OPTION_PAPAYA "Je pourrais vraiment utiliser une papaye." enum eAdventurousDwarf { diff --git a/src/server/scripts/Northrend/storm_peaks.cpp b/src/server/scripts/Northrend/storm_peaks.cpp index cf8a071..0645507 100644 --- a/src/server/scripts/Northrend/storm_peaks.cpp +++ b/src/server/scripts/Northrend/storm_peaks.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -13,7 +13,7 @@ #include "ScriptedEscortAI.h" #define SAY_AGGRO -1571003 -#define GOSSIP_AGNETTA "Skip the warmup, sister... or are you too scared to face soemeone your own size?" +#define GOSSIP_AGNETTA "Passes l'entrainement soeur ... ou as-tu peur de faire face à quelqu'un de ta taille ?" enum eAgnetta { @@ -65,9 +65,9 @@ class npc_agnetta_tyrsdottar : public CreatureScript } }; -#define GOSSIP_ITEM1 "Are you okay? I've come to take you back to Frosthold if you can stand." -#define GOSSIP_ITEM2 "I'm sorry that I didn't get here sooner. What happened?" -#define GOSSIP_ITEM3 "I'll go get some help. Hang in there." +#define GOSSIP_ITEM1 "Êtes-vous d'accord? Je suis venu pour vous ramener à Frosthold si vous pouvez le supporter." +#define GOSSIP_ITEM2 "Je suis désolé, je n'ai pas venir plus tôt. Qu'est-il arrivé ?" +#define GOSSIP_ITEM3 "Je vais aller chercher de l'aide. Accrochez-vous." enum eFrostbornScout { @@ -114,9 +114,9 @@ class npc_frostborn_scout : public CreatureScript }; #define GOSSIP_HN "Thorim?" -#define GOSSIP_SN1 "Can you tell me what became of Sif?" -#define GOSSIP_SN2 "He did more than that, Thorim. He controls Ulduar now." -#define GOSSIP_SN3 "It needn't end this way." +#define GOSSIP_SN1 "Pouvez-vous me dire ce qu'est devenu Sif ?" +#define GOSSIP_SN2 "Il ne fait plus que cela, Thorim. Il contrôle désormais Ulduar." +#define GOSSIP_SN3 "Il ne doit pas finir comme ça." enum eThorim { @@ -205,7 +205,7 @@ class npc_goblin_prisoner : public CreatureScript } }; -#define GOSSIP_CHALLENGER "Let's do this, sister." +#define GOSSIP_CHALLENGER "Faisons-le, ma soeur." enum eVictoriousChallenger { @@ -298,10 +298,10 @@ class npc_victorious_challenger : public CreatureScript } }; -#define GOSSIP_LOKLIRACRONE "Tell me about this proposal" -#define GOSSIP_LOKLIRACRONE1 "What happened then?" -#define GOSSIP_LOKLIRACRONE2 "You want me to take part in the Hyldsmeet to end the war?" -#define GOSSIP_LOKLIRACRONE3 "Very well. I'll take part in this competition." +#define GOSSIP_LOKLIRACRONE "Parlez-moi de cette proposition" +#define GOSSIP_LOKLIRACRONE1 "Qu'est-il arrivé alors ?" +#define GOSSIP_LOKLIRACRONE2 "Vous voulez que je prenne part à Hyldsmeet pour mettre fin à la guerre ?" +#define GOSSIP_LOKLIRACRONE3 "Très bien. Je vais prendre part à cette compétition." enum eLokliraCrone { @@ -364,7 +364,7 @@ enum eInjuredGoblin SAY_END_WP_REACHED = -1800043 }; -#define GOSSIP_ITEM_1 "I am ready, lets get you out of here" +#define GOSSIP_ITEM_1 "Je suis prêt, vous pouvez sortir d'ici" class npc_injured_goblin : public CreatureScript { diff --git a/src/server/scripts/Northrend/wintergrasp.cpp b/src/server/scripts/Northrend/wintergrasp.cpp index 0e568d1..11b92ac 100644 --- a/src/server/scripts/Northrend/wintergrasp.cpp +++ b/src/server/scripts/Northrend/wintergrasp.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -13,10 +13,10 @@ #include "OutdoorPvPWG.h" #include "OutdoorPvPMgr.h" -#define GOSSIP_HELLO_DEMO1 "Build catapult." -#define GOSSIP_HELLO_DEMO2 "Build demolisher." -#define GOSSIP_HELLO_DEMO3 "Build siege engine." -#define GOSSIP_HELLO_DEMO4 "I cannot build more!" +#define GOSSIP_HELLO_DEMO1 "Construire une Catapulte." +#define GOSSIP_HELLO_DEMO2 "Construire un Démolisseur." +#define GOSSIP_HELLO_DEMO3 "Construire un engin de Siège." +#define GOSSIP_HELLO_DEMO4 "Je ne peux pas construire d'avantage !" class npc_demolisher_engineerer : public CreatureScript { @@ -187,7 +187,7 @@ class npc_wg_ally_battle_mage : public CreatureScript WintergraspPortal = me->SummonGameObject(GO_WINTERGRASP_PORTAL, 5686.974609f, 773.303711f, 647.753235f, 5.572729f, 0, 0, 0.324484f, -0.945891f, 0); me->SetOrientation(5.515240f); me->SendMovementFlagUpdate(); - me->MonsterYell("Reinforcements are needed on the Wintergrasp battlefield! I have opened a portal for quick travel to the battle at The Silver Enclave.", LANG_UNIVERSAL, 0); + me->MonsterYell("Les renforts sont nécessaires sur le champ de bataille de Joug-d'hiver! J'ai ouvert un portail pour un voyage rapide à la bataille de l'enclave d'argent.", LANG_UNIVERSAL, 0); ++uiPortalPhase; uiPortalTimer = 1000; break; @@ -399,4 +399,4 @@ void AddSC_wintergrasp() new npc_wg_ally_battle_mage; new npc_wg_horde_battle_mage; new go_wg_veh_teleporter; -} \ No newline at end of file +} diff --git a/src/server/scripts/Northrend/zuldrak.cpp b/src/server/scripts/Northrend/zuldrak.cpp index 61d08c6..2caf8e9 100644 --- a/src/server/scripts/Northrend/zuldrak.cpp +++ b/src/server/scripts/Northrend/zuldrak.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -147,9 +147,9 @@ enum eRageclaw SPELL_KNEEL = 39656 }; -const char * SAY_RAGECLAW_1 = "I poop on you, trollses!"; +const char * SAY_RAGECLAW_1 = "Je chie sur vous, trolls !"; const char * SAY_RAGECLAW_2 = "ARRRROOOOGGGGAAAA!"; -const char * SAY_RAGECLAW_3 = "No more mister nice wolvar!"; +const char * SAY_RAGECLAW_3 = "Pas plus Monsieur gentil varleu!"; #define SAY_RAGECLAW RAND(SAY_RAGECLAW_1, SAY_RAGECLAW_2, SAY_RAGECLAW_3) @@ -219,7 +219,7 @@ class npc_captured_rageclaw : public CreatureScript } }; -#define GOSSIP_ITEM_G "I'm ready, Gymer. Let's go!" +#define GOSSIP_ITEM_G "Je suis prêt, Gymer. Allons-y !" enum eGymer { @@ -476,7 +476,7 @@ class npc_gurgthock : public CreatureScript if(!player) return; - std::string sText = ("The grand Amphitheater of Anguish awaits, " + std::string(player->GetName()) + ". Remember, once a battle starts you have to stay in the area. WIN OR DIE!"); + std::string sText = ("Le grand amphithéâtre de l'Angoisse attend, " + std::string(player->GetName()) + ". Rappelez-vous, qu'une fois la bataille commencée, vous devez rester dans la zone. Vaincre ou mourir !"); me->MonsterSay(sText.c_str(), LANG_UNIVERSAL, 0); uiTimer = 5000; @@ -488,7 +488,7 @@ class npc_gurgthock : public CreatureScript if(!player) return; - std::string sText = ("Prepare to make you stand, " + std::string(player->GetName()) + "! Get in the Amphitheater and stand ready! Remember, you and your opponent must stay in the arena at all times or you will be disqualified!"); + std::string sText = ("Préparez-vous à vous démarquer, " + std::string(player->GetName()) + "! Entrez dans l'amphithéâtre et nous serons prêts! Rappelez-vous, vous et votre adversaire devez rester dans l'arène à tout moment, ou vous serez disqualifié !"); me->MonsterSay(sText.c_str(), LANG_UNIVERSAL, 0); uiTimer = 3000; uiPhase = 8; @@ -504,7 +504,7 @@ class npc_gurgthock : public CreatureScript if(!player) return; - std::string sText = ("Here we are once again, ladies and gentlemen. The epic struggle between life and death in the Amphitheater of Anguish! For this round we have " + std::string(player->GetName()) + " versus the hulking jormungar, Yg... Yggd? Yggdoze? Who comes up with these names?! " + std::string(player->GetName()) + " versus big worm!"); + std::string sText = ("Nous voici ici une fois de plus, mesdames et messieurs. La lutte épique entre la vie et la mort dans l'amphithéâtre de l'Angoisse! Pour ce matches, nous avons " + std::string(player->GetName()) + " contre le hulking jormungar, Yg... Yggd? Yggdoze? Qui vient avec ce noms ?! " + std::string(player->GetName()) + " contre gros ver!"); me->MonsterYell(sText.c_str(), LANG_UNIVERSAL, 0); uiTimer = 10000; uiPhase = 10; @@ -525,7 +525,7 @@ class npc_gurgthock : public CreatureScript if(!player) return; - std::string sText = ("Prepare to make you stand, " + std::string(player->GetName()) + "! Get in the Amphitheater and stand ready! Remember, you and your opponent must stay in the arena at all times or you will be disqualified!"); + std::string sText = ("Préparez-vous à vous démarquer, " + std::string(player->GetName()) + "! Entrez dans l'amphithéâtre et nous serons prêts! Rappelez-vous, vous et votre adversaire devez rester dans l'arène à tout moment, ou vous serez disqualifié !"); me->MonsterSay(sText.c_str(), LANG_UNIVERSAL, 0); uiTimer = 5000; uiPhase = 13; @@ -879,7 +879,7 @@ class npc_yggdras : public CreatureScript { if(Unit* summoner = me->ToTempSummon()->GetSummoner()) { - std::string sText = (std::string(killer->GetName()) + " has defeated Yg.. Yggg-really big worm!"); + std::string sText = (std::string(killer->GetName()) + " a vaincu Yg .. Yggg-vraiment un gros ver !"); summoner->MonsterYell(sText.c_str(), LANG_UNIVERSAL, 0); } @@ -1018,7 +1018,7 @@ class npc_stinkbeard : public CreatureScript if(Player* player = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) player->GetCharmerOrOwnerPlayerOrPlayerItself()->GroupEventHappens(QUEST_AMPHITHEATER_ANGUISH_MAGNATAUR, killer); - std::string sText = ("And with AUTHORITY, " + std::string(killer->GetName()) + " dominates the magnataur lord! Stinkbeard's clan is gonna miss him back home in the Dragonblight!"); + std::string sText = ("Et avec autorité, " + std::string(killer->GetName()) + " domine le seigneur magnataur! Le Clan Stinkbeard va être rappelé dans la région des Désolation des dragons!"); me->MonsterYell(sText.c_str(), LANG_UNIVERSAL, 0); } }; @@ -1157,7 +1157,7 @@ class npc_elemental_lord : public CreatureScript if(Player* player = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) player->GetCharmerOrOwnerPlayerOrPlayerItself()->GroupEventHappens(QUEST_AMPHITHEATER_ANGUISH_FROM_BEYOND, killer); - std::string sText = (std::string(killer->GetName()) + " is victorious once more!"); + std::string sText = (std::string(killer->GetName()) + " est victorieux une fois de plus !"); if(Unit* summoner = me->ToTempSummon()->GetSummoner()) summoner->MonsterYell(sText.c_str(), LANG_UNIVERSAL, 0); @@ -1274,7 +1274,7 @@ enum eCrusade_recruit SAY_RECRUIT_3 = -1571038 }; -#define GOSSIP_ITEM_1 "Get out there and make those Scourge wish they were never reborn!" +#define GOSSIP_ITEM_1 "Allez-y et faites-en sorte que ce Fléau ne renaisse jamais !" class npc_crusade_recruit : public CreatureScript { diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp index 97fb8b4..08b685e 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h index 0fee449..52796e1 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp index 69faa3d..a8b45b4 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h index e86fe30..d6c1b83 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp index b0d533d..5a1fdf2 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h index 59a01c7..c891eb8 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp index 2512605..987fbd7 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h index a011553..05fe25e 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp index d54cb10..e253888 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h index 80b826c..169f2ab 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPWG.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPWG.cpp index bd3b369..ed8a89e 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPWG.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPWG.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPWG.h b/src/server/scripts/OutdoorPvP/OutdoorPvPWG.h index f1e7f6c..7a83721 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPWG.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPWG.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp index c5cdb2d..3a5341c 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h index 84efd7b..ec3e958 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * 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 3629ac2..cac8133 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp index dfae017..e4019eb 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 1f46566..e5a6872 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 @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 b0bd358..e557b09 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index cf1e5b6..a1b5cf6 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp index e9f8d17..ea5a551 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 c1b1ff6..fe262e6 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index ddf6d8d..d1898de 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp index 419bca5..e9d6560 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index 27d522a..61fd83d 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp index 37fe7d0..b9bdb05 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp index 28a173a..6565399 100644 --- a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp index b4ec73c..00bc9f9 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 5776807..f614846 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 @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp index 1eab6af..a229c49 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp index 05e1cfd..fe85aaa 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp index db5ba2d..8fc8737 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp index f41d8c7..0266014 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp index 01da387..d73a1df 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h index 4606517..5ffd245 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp index 7d24b23..4729a5f 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp index 57f73e1..cabfbf1 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp index 001a61c..0e20569 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp index ca52f6c..a7bac58 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index 2b2b1ff..d549729 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp index 0c7bda3..38d84ad 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp index 72e3ac9..1151a98 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp index 848ee9e..1cf647b 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index 2f3d7cc..767cc44 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index 1e1162c..48b7841 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp index defc02e..8cbb708 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 670c3b8..39b0126 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 73a0c0a..54c72cc 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. 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 d6afadb..f9353a4 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 @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index 9c431d2..0fa3e70 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h index 013ab64..1f1c5ee 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp index 67024a4..e4036e0 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp index 7cfc11c..8bbf8d5 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp index f234605..36123f5 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * 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 d8eab89..50c17c7 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/scripts/Outland/blades_edge_mountains.cpp b/src/server/scripts/Outland/blades_edge_mountains.cpp index cab8740..d47fe6c 100644 --- a/src/server/scripts/Outland/blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/blades_edge_mountains.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp index 5419c10..cff9dd1 100644 --- a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp +++ b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/boss_doomwalker.cpp b/src/server/scripts/Outland/boss_doomwalker.cpp index d67cedc..517ef10 100644 --- a/src/server/scripts/Outland/boss_doomwalker.cpp +++ b/src/server/scripts/Outland/boss_doomwalker.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/hellfire_peninsula.cpp b/src/server/scripts/Outland/hellfire_peninsula.cpp index cceb1f2..1cdb288 100644 --- a/src/server/scripts/Outland/hellfire_peninsula.cpp +++ b/src/server/scripts/Outland/hellfire_peninsula.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/nagrand.cpp b/src/server/scripts/Outland/nagrand.cpp index 0736225..9b08740 100644 --- a/src/server/scripts/Outland/nagrand.cpp +++ b/src/server/scripts/Outland/nagrand.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/netherstorm.cpp b/src/server/scripts/Outland/netherstorm.cpp index 60a4c84..3551339 100644 --- a/src/server/scripts/Outland/netherstorm.cpp +++ b/src/server/scripts/Outland/netherstorm.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/shadowmoon_valley.cpp b/src/server/scripts/Outland/shadowmoon_valley.cpp index 2bb3143..25cce49 100644 --- a/src/server/scripts/Outland/shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/shadowmoon_valley.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/shattrath_city.cpp b/src/server/scripts/Outland/shattrath_city.cpp index 9da0124..8bd9ca9 100644 --- a/src/server/scripts/Outland/shattrath_city.cpp +++ b/src/server/scripts/Outland/shattrath_city.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/terokkar_forest.cpp b/src/server/scripts/Outland/terokkar_forest.cpp index 54b6e29..9a8738f 100644 --- a/src/server/scripts/Outland/terokkar_forest.cpp +++ b/src/server/scripts/Outland/terokkar_forest.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Outland/zangarmarsh.cpp b/src/server/scripts/Outland/zangarmarsh.cpp index 8a8fc63..e38325d 100644 --- a/src/server/scripts/Outland/zangarmarsh.cpp +++ b/src/server/scripts/Outland/zangarmarsh.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/PrecompiledHeaders/ScriptPCH.cpp b/src/server/scripts/PrecompiledHeaders/ScriptPCH.cpp index 6ed83a8..46b04fa 100644 --- a/src/server/scripts/PrecompiledHeaders/ScriptPCH.cpp +++ b/src/server/scripts/PrecompiledHeaders/ScriptPCH.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/PrecompiledHeaders/ScriptPCH.h b/src/server/scripts/PrecompiledHeaders/ScriptPCH.h index ea38955..ea37960 100644 --- a/src/server/scripts/PrecompiledHeaders/ScriptPCH.h +++ b/src/server/scripts/PrecompiledHeaders/ScriptPCH.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 347e739..8bde481 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index d60e7ac..62b394f 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 4d9ced9..4180233 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 8e316d9..badee00 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 60c1a45..193719a 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 70bf05c..a2cf5aa 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 7ce9f6f..7778850 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 96433cf..d1dda05 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 7c4b7ac..f81ed71 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 8b26f17..eb0c786 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 9796f24..c8f59b9 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index fd8e893..f54b290 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index e25dc13..795c74f 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/achievement_scripts.cpp b/src/server/scripts/World/achievement_scripts.cpp index cbe1d54..735700d 100644 --- a/src/server/scripts/World/achievement_scripts.cpp +++ b/src/server/scripts/World/achievement_scripts.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index cbc0a91..2dd8e3d 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/attaquecapitalA2.cpp b/src/server/scripts/World/attaquecapitalA2.cpp new file mode 100644 index 0000000..2ac8e2c --- /dev/null +++ b/src/server/scripts/World/attaquecapitalA2.cpp @@ -0,0 +1,5113 @@ + +/******************************************************* + Event de Hurlevent Attaque capital + *******************************************************/ + +#include "ScriptPCH.h" +#include "ScriptedEscortAI.h" +#include "GameEventMgr.h" +#include "attaquecapitalA2.h" + + +//Roi Varan de Hurlevent +class npcevent : public CreatureScript +{ + public: + npcevent() : CreatureScript("npcevent") {} + + struct npceventAI : public npc_escortAI + { + uint32 Phase; + uint32 uiPhaseTimer, uiStep; + bool bStepping; + char msg[255]; + bool debug; + + npceventAI(Creature* creature) : npc_escortAI(creature),summons(me) + { + me->SetReactState(REACT_DEFENSIVE); + //me->SetReactState(REACT_PASSIVE); + me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + Reset(); + } + + SummonList summons; + + + void Reset() + { + Phase = PHASE_NEUTRE; + bStepping = false; + uiStep = 0; + uiPhaseTimer = 1000; + debug = true; + } + + void SummonedCreatureDespawn(Creature* summon) + { + summons.Despawn(summon); + } + + void JustSummoned(Creature* summon) + { + summons.Summon(summon); + } + + void JustDied(Unit* /*killer*/) + { + summons.DespawnAll(); + sGameEventMgr->StartEvent(91); + sWorld->ForceGameEventUpdate(); + } + + void JumpToNextStep(uint32 uiTimer) + { + uiPhaseTimer = uiTimer; + ++uiStep; + + if(debug) + { + //sprintf(msg, " UiStep : %u", uiStep); + sLog->outString("DEBUG: ROIuistep est a %u", uiStep); + } + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 1: + SetEscortPaused(true); + me->HandleEmoteCommand(378); + uiStep=0; + JumpToNextStep(5000); + break; + case 3: + me->HandleEmoteCommand(378); + me->MonsterSay("Il vous faudra pour repousser ces deux attaques frontales! Séparer vos forces en deux Groupes.\nUn qui ira consolider Les Portes de Notre Cité, et l'autre qui iront unir leurs forces pour repousser les flottes arrivant sur notre Port.", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + SetEscortPaused(true); + uiStep=0; + JumpToNextStep(8000); + break; + case 4: + me->SummonCreature(100019, -8486.429688f, 389.700989f, 108.610001f, 5.392970f); + break; + case 5: + me->HandleEmoteCommand(378); + me->MonsterSay("Le groupe qui se portera volontaire pour défendre notre Port de l'invasion des Gobelins seront sous les ordres de Dame Jaina.", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + SetEscortPaused(true); + uiStep=0; + JumpToNextStep(6000); + break; + case 7: + me->HandleEmoteCommand(378); + me->MonsterSay("Le groupe qui se portera volontaire pour défendre Les Portes de Notre Cité de l'invasion des Défias seront sous les ordres du Général Marcus.", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + me->PlayDirectSound(3900);// Music intro + SetEscortPaused(true); + JumpToNextStep(22000); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8444.54f, 337.17f, 121.74f); + AddWaypoint(2, -8434.74f, 343.93f, 120.88f); + AddWaypoint(3, -8436.08f, 342.91f, 121.05f); + AddWaypoint(4, -8451.41f, 330.90f, 121.32f); + AddWaypoint(5, -8449.09f, 332.76f, 121.74f); + AddWaypoint(6, -8440.50f, 332.16f, 123.19f); + AddWaypoint(7, -8442.23f, 334.26f, 122.57f); + break; + default: + sLog->outError("Unexpected movement variation (%i) in npceventAI::SetupMovement call!", variation); + return; + } + if (npceventAI* pEscortAI = CAST_AI(npceventAI, me->AI())) + { + if (variation > 0) + pEscortAI->Start(true, true, NULL, NULL, false, true); + else + { + pEscortAI->Start(true, true); + pEscortAI->SetDespawnAtEnd(false); + } + pEscortAI->SetDespawnAtFar(false); + me->setActive(true); + } + } + + + void UpdateAI(const uint32 diff) + { + npc_escortAI::UpdateAI(diff); + + if(bStepping) + { + if(uiPhaseTimer <= diff) + { + switch(uiStep) + { + case 0: + me->PlayDirectSound(3900);// Music intro + me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING); + me->HandleEmoteCommand(412); + me->MonsterSay("Partisans de l'Alliance, l'heure est grave. Nos ennemies juré les Défias ont réussi à monter contre nous les Gobelins.", LANG_UNIVERSAL, 0); + JumpToNextStep(500); + break; + case 1: + SetEscortPaused(false); + break; + case 2: + me->HandleEmoteCommand(412); + me->MonsterSay("Les chiens! Dame Jaina est en route à sont arrivée Héros nous formerons les rangs.", LANG_UNIVERSAL, 0); + me->SummonCreature(100025, -8504.08f, 353.67f, 120.88f, 4.60f); + JumpToNextStep(5000); + break; + case 3: + me->HandleEmoteCommand(412); + me->MonsterSay("Général Marcus voici les Héros qui seront sous votre commandemant pour défendre les portes de notre cité.", LANG_UNIVERSAL, 0); + JumpToNextStep(25000); + break; + case 4: + me->HandleEmoteCommand(412); + me->MonsterSay("Héros Former les Rangs! Les Nains seront nos alliés sur le Champ de bataille, portez leur assistances si nécessaire!", LANG_UNIVERSAL, 0); + JumpToNextStep(10000); + break; + case 5: + me->HandleEmoteCommand(412); + me->MonsterSay("La défaite n'est pas envisageable Héros! Pour l'Alliance! Pour l'Honneur!", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 6: + me->HandleEmoteCommand(412); + me->MonsterSay("Triomphez de nos ennemis, et vous serez grandement récompensés! Hurlevent ne doit pas Tomber!", LANG_UNIVERSAL, 0); + me->SetReactState(REACT_DEFENSIVE); + JumpToNextStep(5000); + break; + } + }else uiPhaseTimer -= diff; + } + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npceventAI(creature); + } + + bool OnGossipHello(Player* player, Creature* creature) + { + player->ADD_GOSSIP_ITEM( 9, "Nous avons entendu Votre Appel Sir!", GOSSIP_SENDER_MAIN, 1); + player->ADD_GOSSIP_ITEM( 4, "Quitter", GOSSIP_SENDER_MAIN, 2); + player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); + return true; + } + + bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action ) + { + if(sender == GOSSIP_SENDER_MAIN) + { + SendDefaultMenu(player, creature, action ); + player->CLOSE_GOSSIP_MENU(); + } + return true; + } + + void SendDefaultMenu(Player* player, Creature *creature, uint32 action ) + { + npceventAI* NPCAI = CAST_AI(npcevent::npceventAI, creature->AI()); + + switch(action) + { + case 1: + + player->CLOSE_GOSSIP_MENU(); + NPCAI->SetupMovement(0); + NPCAI->bStepping = true; + break; + case 2: + player->CLOSE_GOSSIP_MENU(); + break; + default: + player->CLOSE_GOSSIP_MENU(); + break; + } + } +}; + + + + +//Général Marcus Hurlevent + + +class npcmarcus : public CreatureScript +{ + public: + npcmarcus() : CreatureScript("npcmarcus") {} + + struct npcmarcusAI : public npc_escortAI + { + + uint32 Phase; + uint32 uiPhaseTimer, uiStep; + uint32 uiWave; + uint32 WavesCounter; + uint64 uiWaveGUID[ENCOUNTER_WAVES_MAX_SPAWNS]; + bool bStepping; + char msg[255]; + bool WaveDone; + bool debug; + + npcmarcusAI(Creature* creature) : npc_escortAI(creature),summons(me) + { + me->SetReactState(REACT_PASSIVE); + me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE); + me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + Reset(); + } + + SummonList summons; + + + void Reset() + { + Phase = PHASE_NEUTRE; + bStepping = false; + uiStep = 0; + uiPhaseTimer = 1000; + debug = true; + SetupMovement(0); + WavesCounter = 0; + uiWave = 0; + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) uiWaveGUID[i] = 0; + WaveDone = false; + } + + + void SummonedCreatureDespawn(Creature* summon) + { + summons.Despawn(summon); + } + + void JustSummoned(Creature* summon) + { + summons.Summon(summon); + } + + + void SpawnWaveGroup(uint32 waveID, uint64* guidVector) + { + for(uint32 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if((uint32)HurleventBaseWaves[waveID][i][0] == 0) break; + + if(Creature* pTemp = me->SummonCreature((uint32)HurleventBaseWaves[waveID][i][0], HurleventBaseWaves[waveID][i][1], HurleventBaseWaves[waveID][i][2], HurleventBaseWaves[waveID][i][3], HurleventBaseWaves[waveID][i][4], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000)) + { + guidVector[i] = pTemp->GetGUID(); + + } + } + SendCrierWarning(waveID); + } + + + void SendCrierWarning(uint8 waveNumber) + { + char* textId = ""; + + switch(waveNumber) + { + case 0: textId = "1er Assaut aux Portes de Hurlevent en Approche !"; + me->SummonCreature(100037, -8999.35f, 401.86f, 72.92f, 2.23f); + me->SummonCreature(100038, -8995.03f, 400.50f, 72.92f, 2.23f); + me->SummonCreature(100039, -8995.75f, 404.55f, 73.12f, 2.23f); + me->SummonCreature(100040, -9072.96f, 505.81f, 76.01f, 5.42f); + me->SummonCreature(100041, -9077.67f, 506.20f, 76.53f, 5.42f); + me->SummonCreature(100042, -9077.82f, 501.85f, 76.84f, 5.42f); + break; + case 1: textId = "2ème Assaut aux Portes de Hurlevent en Approche !"; + me->SummonCreature(100037, -8999.35f, 401.86f, 72.92f, 2.23f); + me->SummonCreature(100038, -8995.03f, 400.50f, 72.92f, 2.23f); + me->SummonCreature(100039, -8995.75f, 404.55f, 73.12f, 2.23f); + me->SummonCreature(100040, -9072.96f, 505.81f, 76.01f, 5.42f); + me->SummonCreature(100041, -9077.67f, 506.20f, 76.53f, 5.42f); + me->SummonCreature(100042, -9077.82f, 501.85f, 76.84f, 5.42f); + break; + case 2: textId = "3ème Assaut aux Portes de Hurlevent en Approche !"; + me->SummonCreature(100037, -8999.35f, 401.86f, 72.92f, 2.23f); + me->SummonCreature(100038, -8995.03f, 400.50f, 72.92f, 2.23f); + me->SummonCreature(100039, -8995.75f, 404.55f, 73.12f, 2.23f); + me->SummonCreature(100040, -9072.96f, 505.81f, 76.01f, 5.42f); + me->SummonCreature(100041, -9077.67f, 506.20f, 76.53f, 5.42f); + me->SummonCreature(100042, -9077.82f, 501.85f, 76.84f, 5.42f); + break; + case 3: textId = "4ème Assaut aux Portes de Hurlevent en Approche !"; + me->SummonCreature(100037, -8999.35f, 401.86f, 72.92f, 2.23f); + me->SummonCreature(100038, -8995.03f, 400.50f, 72.92f, 2.23f); + me->SummonCreature(100039, -8995.75f, 404.55f, 73.12f, 2.23f); + me->SummonCreature(100040, -9072.96f, 505.81f, 76.01f, 5.42f); + me->SummonCreature(100041, -9077.67f, 506.20f, 76.53f, 5.42f); + me->SummonCreature(100042, -9077.82f, 501.85f, 76.84f, 5.42f); + break; + case 4: textId = "5ème Assaut aux Portes de Hurlevent en Approche !"; + me->SummonCreature(100037, -8999.35f, 401.86f, 72.92f, 2.23f); + me->SummonCreature(100038, -8995.03f, 400.50f, 72.92f, 2.23f); + me->SummonCreature(100039, -8995.75f, 404.55f, 73.12f, 2.23f); + me->SummonCreature(100040, -9072.96f, 505.81f, 76.01f, 5.42f); + me->SummonCreature(100041, -9077.67f, 506.20f, 76.53f, 5.42f); + me->SummonCreature(100042, -9077.82f, 501.85f, 76.84f, 5.42f); + break; + case 5: textId = "6ème Assaut aux Portes de Hurlevent en Approche !"; + me->SummonCreature(100037, -8999.35f, 401.86f, 72.92f, 2.23f); + me->SummonCreature(100038, -8995.03f, 400.50f, 72.92f, 2.23f); + me->SummonCreature(100039, -8995.75f, 404.55f, 73.12f, 2.23f); + me->SummonCreature(100040, -9072.96f, 505.81f, 76.01f, 5.42f); + me->SummonCreature(100041, -9077.67f, 506.20f, 76.53f, 5.42f); + me->SummonCreature(100042, -9077.82f, 501.85f, 76.84f, 5.42f); + break; + case 6: textId = "7ème Assaut aux Portes de Hurlevent en Approche !"; + me->SummonCreature(100037, -8999.35f, 401.86f, 72.92f, 2.23f); + me->SummonCreature(100038, -8995.03f, 400.50f, 72.92f, 2.23f); + me->SummonCreature(100039, -8995.75f, 404.55f, 73.12f, 2.23f); + me->SummonCreature(100040, -9072.96f, 505.81f, 76.01f, 5.42f); + me->SummonCreature(100041, -9077.67f, 506.20f, 76.53f, 5.42f); + me->SummonCreature(100042, -9077.82f, 501.85f, 76.84f, 5.42f); + break; + case 7: textId = "8ème Assaut aux Portes de Hurlevent en Approche !"; + me->SummonCreature(100037, -8999.35f, 401.86f, 72.92f, 2.23f); + me->SummonCreature(100038, -8995.03f, 400.50f, 72.92f, 2.23f); + me->SummonCreature(100039, -8995.75f, 404.55f, 73.12f, 2.23f); + me->SummonCreature(100040, -9072.96f, 505.81f, 76.01f, 5.42f); + me->SummonCreature(100041, -9077.67f, 506.20f, 76.53f, 5.42f); + me->SummonCreature(100042, -9077.82f, 501.85f, 76.84f, 5.42f); + break; + case 8: textId = "Attention, Le général des Défias est en approche Préparez-vous !"; + me->SummonCreature(100037, -8999.35f, 401.86f, 72.92f, 2.23f); + me->SummonCreature(100038, -8995.03f, 400.50f, 72.92f, 2.23f); + me->SummonCreature(100039, -8995.75f, 404.55f, 73.12f, 2.23f); + me->SummonCreature(100040, -9072.96f, 505.81f, 76.01f, 5.42f); + me->SummonCreature(100041, -9077.67f, 506.20f, 76.53f, 5.42f); + me->SummonCreature(100042, -9077.82f, 501.85f, 76.84f, 5.42f); + break; + } + + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, textId); + } + + + void JumpToNextStep(uint32 uiTimer) + { + uiPhaseTimer = uiTimer; + ++uiStep; + + if(debug) + { + //sprintf(msg, " UiStep : %u", uiStep); + sLog->outString("DEBUG: Marcusuistep est a %u", uiStep); + } + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 3: + SetEscortPaused(true); + me->HandleEmoteCommand(66); + uiStep=0; + JumpToNextStep(8000); + break; + case 4: + SetEscortPaused(true); + me->MonsterYell("Mon Seigneur, nos éclaireurs nous signalent des mouvements massives de troupes Défias arrivant aux Portes de Hurlevent! ", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + uiStep=0; + JumpToNextStep(5000); + break; + case 6: + SetEscortPaused(true); + me->MonsterYell("Les Défias ont eut vent que nos Forces étaient dispersés dans tous le Royaume de l'Est et profitent de ce moment de faiblesse! ", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + uiStep=0; + JumpToNextStep(60000); + break; + case 8: + SetEscortPaused(true); + me->PlayDirectSound(11708); + me->MonsterYell("Que le Raid soutenant les Portes de la Cité me suive! ", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(12000); + break; + case 12: + SetEscortPaused(true); + me->MonsterSay("Nous avons du chemin a parcourir, tous sur vos montures, et suivez moi!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(5000); + break; + case 36: + SetEscortPaused(true); + me->MonsterSay("Même si nous devons combattre jusqu'à notre derniers souffle, ils ne doivent pas franchir nos portes!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(3000); + break; + + + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8456.42f, 352.02f, 120.65f); + AddWaypoint(2, -8455.47f, 350.84f, 120.88f); + AddWaypoint(3, -8447.88f, 341.35f, 120.88f); + AddWaypoint(4, -8445.10f, 337.70f, 121.74f); + AddWaypoint(5, -8442.91f, 339.76f, 121.74f); + AddWaypoint(6, -8442.64f, 337.58f, 122.16f); + AddWaypoint(7, -8439.29f, 334.71f, 122.57f); + AddWaypoint(8, -8439.60f, 335.10f, 122.57f); + AddWaypoint(9, -8452.75f, 351.36f, 120.88f); + AddWaypoint(10, -8482.81f, 389.76f, 109.15f); + AddWaypoint(11, -8505.37f, 417.90f, 108.38f); + AddWaypoint(12, -8545.20f, 462.13f, 104.36f); + AddWaypoint(13, -8568.4f, 468.337f, 104.504f); + AddWaypoint(14, -8583.17f, 482.146f, 104.213f); + AddWaypoint(15, -8603.67f, 505.009f, 103.721f); + AddWaypoint(16, -8609.77f, 507.466f, 103.714f); + AddWaypoint(17, -8629.16f, 531.799f, 100.907f); + AddWaypoint(18, -8658.65f, 553.873f, 96.9133f); + AddWaypoint(19, -8681.25f, 547.595f, 97.5431f); + AddWaypoint(20, -8705.67f, 525.537f, 97.636f); + AddWaypoint(21, -8713.04f, 520.017f, 97.206f); + AddWaypoint(22, -8733.59f, 544.436f, 101.129f); + AddWaypoint(23, -8748.84f, 561.603f, 97.4001f); + AddWaypoint(24, -8737.77f, 574.672f, 97.4109f); + AddWaypoint(25, -8770.42f, 609.147f, 97.223f); + AddWaypoint(26, -8797.18f, 587.918f, 97.3234f); + AddWaypoint(27, -8827.5f, 625.675f, 93.8948f); + AddWaypoint(28, -8889.26f, 572.961f, 92.5874f); + AddWaypoint(29, -8929.35f, 541.402f, 94.312f); + AddWaypoint(30, -8948.85f, 564.596f, 93.7837f); + AddWaypoint(31, -8952.81f, 569.59f, 93.7835f); + AddWaypoint(32, -8977.3f, 551.201f, 93.8421f); + AddWaypoint(33, -8954.45f, 520.903f, 96.3575f); + AddWaypoint(34, -9074.69f, 425.621f, 93.0563f); + AddWaypoint(35, -9062.91f, 414.596f, 93.2958f); + AddWaypoint(36, -9064.25f, 416.472f, 93.2958f); + break; + default: + sLog->outError("Unexpected movement variation (%i) in npcmarcusAI::SetupMovement call!", variation); + return; + } + if(npcmarcusAI* pEscortAI = CAST_AI(npcmarcusAI, me->AI())) + { + pEscortAI->Start(false, true); + pEscortAI->SetDespawnAtEnd(false); + pEscortAI->SetDespawnAtFar(false); + me->setActive(true); + bStepping = true; + } + } + + + void UpdateAI(const uint32 diff) + { + npc_escortAI::UpdateAI(diff); + + if(sGameEventMgr->IsActiveEvent(90)) + { + if(bStepping) + { + if(uiPhaseTimer <= diff) + { + switch(uiStep) + { + case 0: + SetRun(true); + JumpToNextStep(2000); + break; + case 1: + SetEscortPaused(false); + break; + case 2: //go au Waypoint 12 + SetEscortPaused(false); + break; + case 3: + me->Mount(MOUNT_MODEL); + me->SetSpeed(MOVE_RUN, SPEED_MOUNT); + JumpToNextStep(5000); + break; + case 4: + me->MonsterSay("En avant Héros.", LANG_UNIVERSAL, 0); + JumpToNextStep(10000); + case 5: + SetEscortPaused(false); + break; + case 6: + me->Unmount(); + me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetReactState(REACT_PASSIVE); + JumpToNextStep(5000); + break; + case 7: + me->SummonCreature(100044, -9040.17f, 440.30f, 93.29f, 3.50f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000); + me->SummonCreature(100044, -9053.37f, 457.79f, 93.28f, 4.00f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000); + me->MonsterSay("Voici deux cannon encore en état de marchent pour vous aider dans votre Combat", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 8: + me->MonsterSay("Placez-y vos deux meilleurs Artilleurs Héros. Ils vous seront d'un grands soutiens!", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 9: + me->MonsterYell("Que Dieu vous protèges mes Frères, et pas de quartier.", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + me->PlayDirectSound(11803); + + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + break; + case 10: + if(!WaveDone) + { + uint32 mobCounter = 0 , deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 11: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Premier Assaut Stoppé aux Portes de Hurlevent! "); + me->MonsterTextEmote("Premier Assaut Stoppé aux Portes de Hurlevent!", 0, true); + JumpToNextStep(4000); + break; + case 12: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 13: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 14: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Deuxième Assaut Stoppé aux Portes de Hurlevent! "); + me->MonsterTextEmote("Deuxième Assaut Stoppé aux Portes de Hurlevent!", 0, true); + JumpToNextStep(4000); + break; + case 15: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Courage Héros, il faut tenir bon!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 16: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 17: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Troisième Assaut Stoppé aux Portes de Hurlevent! "); + me->MonsterTextEmote("Troisième Assaut Stoppé aux Portes de Hurlevent!", 0, true); + JumpToNextStep(4000); + break; + case 18: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 19: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 20: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Quatrième Assaut Stoppé aux Portes de Hurlevent! "); + me->MonsterTextEmote("Quatrième Assaut Stoppé aux Portes de Hurlevent!", 0, true); + JumpToNextStep(4000); + break; + case 21: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Les Défias ne doivent pas franchir nos Portes!!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 22: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 23: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Cinquième Assaut Stoppé aux Portes de Hurlevent! "); + me->MonsterTextEmote("Cinquième Assaut Stoppé aux Portes de Hurlevent!", 0, true); + JumpToNextStep(4000); + break; + case 24: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 25: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 26: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Sixième Assaut Stoppé aux Portes de Hurlevent! "); + me->MonsterTextEmote("Sixième Assaut Stoppé aux Portes de Hurlevent!", 0, true); + JumpToNextStep(4000); + break; + case 27: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Ne faiblissez pas dans l'effort! Il faut sauver notre Roi à tout prix!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 28: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 29: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Septième Assaut Stoppé aux Portes de Hurlevent! "); + me->MonsterTextEmote("Septième Assaut Stoppé aux Portes de Hurlevent!", 0, true); + JumpToNextStep(4000); + break; + case 30: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 31: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 32: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Huitème Assaut Stoppé aux Portes de Hurlevent! "); + me->MonsterTextEmote("Huitème Assaut Stoppé aux Portes de Hurlevent!", 0, true); + JumpToNextStep(4000); + break; + case 33: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(5000); + me->PlayDirectSound(11803); + me->MonsterYell("Bravo Héros, vous venez de repousser les assauts des Défias! Préparez-vous ! Leur Général arrive!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 34: + //me->MonsterTextEmote("Attention, Le général des Défias est en approche Préparez-vous !", 0, true); + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 35: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "L'Alliance a Défendu Vaillament Les Portes de Hurvelent!"); + me->MonsterTextEmote("L'Alliance a Défendu Vaillament Les Portes de Hurvelent!", 0, true); + JumpToNextStep(4000); + case 36: + JumpToNextStep(4000); + break; + case 37: + me->MonsterYell("Bravo Héros, vous venez de repousser les assauts des Défias! Hurlevent vous sera indéfiniment redevable!", LANG_UNIVERSAL, 0); + JumpToNextStep(4000); + break; + case 38: + break; + + + + } + }else uiPhaseTimer -= diff; + } + } + else + { + summons.DespawnAll(); //despawn ici + } + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npcmarcusAI(creature); + } +}; + + + + + + + + + + +/************************/ +/* Dame Jaina Hurlevent */ +/************************/ + +class npcjaina : public CreatureScript +{ + public: + npcjaina() : CreatureScript("npcjaina") {} + + struct npcjainaAI : public npc_escortAI + { + + uint32 Phase; + uint32 uiPhaseTimer, uiStep; + uint32 uiWave; + uint32 WavesCounter; + uint32 variation; + uint64 uiWaveGUID[ENCOUNTER_WAVES_MAX_SPAWNS]; + bool bStepping; + char msg[255]; + bool debug; + bool WaveDone; + + + + npcjainaAI(Creature* creature) : npc_escortAI(creature) + { + me->SetReactState(REACT_PASSIVE); + me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE); + me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + Reset(); + } + + void Reset() + { + Phase = PHASE_NEUTRE; + bStepping = false; + uiStep = 0; + uiPhaseTimer = 1000; + debug = true; + variation = 0; + SetupMovement(0); + WavesCounter = 0; + uiWave = 0; + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) uiWaveGUID[i] = 0; + WaveDone = false; + SetRun(true); + } + + void SpawnWaveGroup(uint32 waveID, uint64* guidVector) + { + for(uint32 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if((uint32)PortBaseWaves[waveID][i][0] == 0) break; + + if(Creature* pTemp = me->SummonCreature((uint32)PortBaseWaves[waveID][i][0], PortBaseWaves[waveID][i][1], PortBaseWaves[waveID][i][2], PortBaseWaves[waveID][i][3], PortBaseWaves[waveID][i][4], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000)) + { + guidVector[i] = pTemp->GetGUID(); + } + } + SendCrierWarning(waveID); + } + + + void SendCrierWarning(uint8 waveNumber) + { + char* textId = ""; + + switch(waveNumber) + { + case 0: textId = "1er Accostage au Port de Hurlevent en Approche !"; + me->SummonCreature(100031, -8335.28f, 1217.61f, 5.17f, 6.28f); + me->SummonCreature(100032, -8340.17f, 1214.10f, 5.18f, 6.28f); + me->SummonCreature(100033, -8335.68f, 1210.92f, 5.26f, 6.28f); + me->SummonCreature(100034, -8241.97f, 1218.29f, 5.12f, 3.13f); + me->SummonCreature(100035, -8238.20f, 1215.05f, 5.16f, 3.13f); + me->SummonCreature(100036, -8241.96f, 1211.93f, 5.24f, 3.13f); + break; + case 1: textId = "2ème Accostage au Port de Hurlevent en Approche !"; + me->SummonCreature(100031, -8335.28f, 1217.61f, 5.17f, 6.28f); + me->SummonCreature(100032, -8340.17f, 1214.10f, 5.18f, 6.28f); + me->SummonCreature(100033, -8335.68f, 1210.92f, 5.26f, 6.28f); + me->SummonCreature(100034, -8241.97f, 1218.29f, 5.12f, 3.13f); + me->SummonCreature(100035, -8238.20f, 1215.05f, 5.16f, 3.13f); + me->SummonCreature(100036, -8241.96f, 1211.93f, 5.24f, 3.13f); + break; + case 2: textId = "3ème Accostage au Port de Hurlevent en Approche !"; + me->SummonCreature(100031, -8335.28f, 1217.61f, 5.17f, 6.28f); + me->SummonCreature(100032, -8340.17f, 1214.10f, 5.18f, 6.28f); + me->SummonCreature(100033, -8335.68f, 1210.92f, 5.26f, 6.28f); + me->SummonCreature(100034, -8241.97f, 1218.29f, 5.12f, 3.13f); + me->SummonCreature(100035, -8238.20f, 1215.05f, 5.16f, 3.13f); + me->SummonCreature(100036, -8241.96f, 1211.93f, 5.24f, 3.13f); + break; + case 3: textId = "4ème Accostage au Port de Hurlevent en Approche !"; + me->SummonCreature(100031, -8335.28f, 1217.61f, 5.17f, 6.28f); + me->SummonCreature(100032, -8340.17f, 1214.10f, 5.18f, 6.28f); + me->SummonCreature(100033, -8335.68f, 1210.92f, 5.26f, 6.28f); + me->SummonCreature(100034, -8241.97f, 1218.29f, 5.12f, 3.13f); + me->SummonCreature(100035, -8238.20f, 1215.05f, 5.16f, 3.13f); + me->SummonCreature(100036, -8241.96f, 1211.93f, 5.24f, 3.13f); + break; + case 4: textId = "5ème Accostage au Port de Hurlevent en Approche !"; + me->SummonCreature(100031, -8335.28f, 1217.61f, 5.17f, 6.28f); + me->SummonCreature(100032, -8340.17f, 1214.10f, 5.18f, 6.28f); + me->SummonCreature(100033, -8335.68f, 1210.92f, 5.26f, 6.28f); + me->SummonCreature(100034, -8241.97f, 1218.29f, 5.12f, 3.13f); + me->SummonCreature(100035, -8238.20f, 1215.05f, 5.16f, 3.13f); + me->SummonCreature(100036, -8241.96f, 1211.93f, 5.24f, 3.13f); + break; + case 5: textId = "6ème Accostage au Port de Hurlevent en Approche !"; + me->SummonCreature(100031, -8335.28f, 1217.61f, 5.17f, 6.28f); + me->SummonCreature(100032, -8340.17f, 1214.10f, 5.18f, 6.28f); + me->SummonCreature(100033, -8335.68f, 1210.92f, 5.26f, 6.28f); + me->SummonCreature(100034, -8241.97f, 1218.29f, 5.12f, 3.13f); + me->SummonCreature(100035, -8238.20f, 1215.05f, 5.16f, 3.13f); + me->SummonCreature(100036, -8241.96f, 1211.93f, 5.24f, 3.13f); + break; + case 6: textId = "7ème Accostage au Port de Hurlevent en Approche !"; + me->SummonCreature(100031, -8335.28f, 1217.61f, 5.17f, 6.28f); + me->SummonCreature(100032, -8340.17f, 1214.10f, 5.18f, 6.28f); + me->SummonCreature(100033, -8335.68f, 1210.92f, 5.26f, 6.28f); + me->SummonCreature(100034, -8241.97f, 1218.29f, 5.12f, 3.13f); + me->SummonCreature(100035, -8238.20f, 1215.05f, 5.16f, 3.13f); + me->SummonCreature(100036, -8241.96f, 1211.93f, 5.24f, 3.13f); + break; + case 7: textId = "8ème Accostage au Port de Hurlevent en Approche !"; + me->SummonCreature(100031, -8335.28f, 1217.61f, 5.17f, 6.28f); + me->SummonCreature(100032, -8340.17f, 1214.10f, 5.18f, 6.28f); + me->SummonCreature(100033, -8335.68f, 1210.92f, 5.26f, 6.28f); + me->SummonCreature(100034, -8241.97f, 1218.29f, 5.12f, 3.13f); + me->SummonCreature(100035, -8238.20f, 1215.05f, 5.16f, 3.13f); + me->SummonCreature(100036, -8241.96f, 1211.93f, 5.24f, 3.13f); + break; + case 8: textId = "Attention, Le Roi des Gobelins est en approche Préparez-vous !"; + me->SummonCreature(100031, -8335.28f, 1217.61f, 5.17f, 6.28f); + me->SummonCreature(100032, -8340.17f, 1214.10f, 5.18f, 6.28f); + me->SummonCreature(100033, -8335.68f, 1210.92f, 5.26f, 6.28f); + me->SummonCreature(100034, -8241.97f, 1218.29f, 5.12f, 3.13f); + me->SummonCreature(100035, -8238.20f, 1215.05f, 5.16f, 3.13f); + me->SummonCreature(100036, -8241.96f, 1211.93f, 5.24f, 3.13f); + break; + } + + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, textId); + } + + void JumpToNextStep(uint32 uiTimer) + { + uiPhaseTimer = uiTimer; + ++uiStep; + + if(debug) + { + //sprintf(msg, " UiStep : %u", uiStep); + sLog->outString("DEBUG: Jainauistep est a %u", uiStep); + } + } + + void WaypointReached(uint32 uiPointId) + { + switch(variation) + { + case 0: + switch(uiPointId) + { + case 2: + SetEscortPaused(true); + me->MonsterYell("Sir! Mes sentinelles m'informent de l'arrivé des gobelins au large du Port!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + uiStep=0; + JumpToNextStep(3000); + break; + case 4: + SetEscortPaused(true); + me->MonsterYell("Il nous faut agir au plus vite Seigneur, et organiser la défense de Hurlevent avec toutes les Forces disponibles!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + uiStep=0; + JumpToNextStep(36000); + break; + case 6: + SetEscortPaused(true); + me->MonsterYell("Que le Raid repoussant les flottes gobelines du Port me suive!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(10000); + break; + case 10: + SetEscortPaused(true); + me->MonsterSay("Nous devons empécher cela à tout prix! Vite dépéchez-vous en Monture!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(5000); + break; + case 62: + SetEscortPaused(true); + me->MonsterSay("Force de l'Alliance je vous en conjure, stopper cette invasion coute que coute!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(8000); + break; + case 109: + SetEscortPaused(true); + me->MonsterSay("Mes Archimages m'ont signalés une grande perturbation de l'équilibre dans cette zone!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(8000); + break; + } + break; + + case 1: + switch(uiPointId) + { + case 1: + + break; + + } + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8505.74f, 338.43f, 120.88f); + AddWaypoint(2, -8455.39f, 332.38f, 120.88f); + AddWaypoint(3, -8451.86f, 339.78f, 120.88f); + AddWaypoint(4, -8445.71f, 335.10f, 122.16f); + AddWaypoint(5, -8443.05f, 331.72f, 122.57f); + AddWaypoint(6, -8443.33f, 332.07f, 122.57f); + AddWaypoint(7, -8455.73f, 347.521f, 120.886f); + AddWaypoint(8, -8487.24f, 386.833f, 109.046f); + AddWaypoint(9, -8508.07f, 412.822f, 108.386f); + AddWaypoint(10, -8548.51f, 462.886f, 104.59f); //monture + AddWaypoint(11, -8553.96f, 466.65f, 104.528f); + AddWaypoint(12, -8565.60f, 466.135f, 104.587f); + AddWaypoint(13, -8573.41f, 472.469f, 104.244f); + AddWaypoint(14, -8600.62f, 501.892f, 103.722f); + AddWaypoint(15, -8611.36f, 511.205f, 103.561f); + AddWaypoint(16, -8606.52f, 518.516f, 105.105f); + AddWaypoint(17, -8578.11f, 543.958f, 101.783f); + AddWaypoint(18, -8587.42f, 575.51f, 102.936f); + AddWaypoint(19, -8575.72f, 601.985f, 103.266f); + AddWaypoint(20, -8565.79f, 614.294f, 102.339f); + AddWaypoint(21, -8556.67f, 615.66f, 102.297f); + AddWaypoint(22, -8532.01f, 634.339f, 100.217f); + AddWaypoint(23, -8510.08f, 650.943f, 100.29f); + AddWaypoint(24, -8525.93f, 675.358f, 102.186f); + AddWaypoint(25, -8534.79f, 688.946f, 97.6612f); + AddWaypoint(26, -8552.11f, 680.849f, 97.0807f); + AddWaypoint(27, -8561.20f, 674.058f, 97.0152f); + AddWaypoint(28, -8596.46f, 715.665f, 96.6519f); + AddWaypoint(29, -8612.86f, 705.959f, 96.7221f); + AddWaypoint(30, -8663.27f, 765.048f, 96.6868f); + AddWaypoint(31, -8634.25f, 787.311f, 96.6514f); + AddWaypoint(32, -8640.97f, 823.247f, 96.637f); + AddWaypoint(33, -8651.84f, 838.927f, 96.7948f); + AddWaypoint(34, -8682.63f, 878.474f, 97.0153f); + AddWaypoint(35, -8632.03f, 920.573f, 99.3651f); + AddWaypoint(36, -8620.61f, 946.143f, 99.4453f); + AddWaypoint(37, -8579.24f, 983.826f, 97.4567f); + AddWaypoint(38, -8571.82f, 990.742f, 96.3002f); + AddWaypoint(39, -8548.19f, 967.142f, 96.3968f); + AddWaypoint(40, -8519.73f, 955.623f, 95.8422f); + AddWaypoint(41, -8493.30f, 965.382f, 95.8787f); + AddWaypoint(42, -8488.60f, 968.94f, 95.847f); + AddWaypoint(43, -8480.56f, 975.026f, 88.083f); + AddWaypoint(44, -8466.75f, 986.202f, 79.0201f); + AddWaypoint(45, -8470.92f, 991.49f, 79.0695f); + AddWaypoint(46, -8477.21f, 986.69f, 76.0614f); + AddWaypoint(47, -8484.66f, 981.222f, 72.7376f); + AddWaypoint(48, -8492.17f, 991.405f, 68.8016f); + AddWaypoint(49, -8505.16f, 1008.42f, 59.4794f); + AddWaypoint(50, -8457.17f, 1030.51f, 59.4744f); + AddWaypoint(51, -8435.02f, 1050.24f, 44.09f); + AddWaypoint(52, -8416.70f, 1066.25f, 31.6304f); + AddWaypoint(53, -8407.04f, 1071.18f, 31.6304f); + AddWaypoint(54, -8404.41f, 1080.00f, 31.63f); + AddWaypoint(55, -8397.09f, 1111.99f, 17.9447f); + AddWaypoint(56, -8394.95f, 1138.16f, 17.9614f); + AddWaypoint(57, -8301.80f, 1136.89f, 18.0951f); + AddWaypoint(58, -8300.89f, 1177.78f, 18.4219f); + AddWaypoint(59, -8300.83f, 1196.48f, 5.61882f); + AddWaypoint(60, -8284.50f, 1243.21f, 5.23046f); + AddWaypoint(61, -8272.42f, 1242.64f, 5.23058f); + AddWaypoint(62, -8276.02f, 1242.51f, 5.23058f); + AddWaypoint(63, -8281.31f, 1233.69f, 5.23063f); + AddWaypoint(64, -8309.31f, 1209.43f, 5.37823f); + AddWaypoint(65, -8450.17f, 1207.11f, 5.2094f); + AddWaypoint(66, -8531.66f, 1214.22f, 5.16238f); + AddWaypoint(67, -8566.33f, 1214.1f, 5.12533f); + AddWaypoint(68, -8572.91f, 1205.89f, 5.20212f); + AddWaypoint(69, -8574.04f, 1193.53f, 5.7967f); + AddWaypoint(70, -8574.68f, 1186.56f, 11.4009f); + AddWaypoint(71, -8575.35f, 1177.67f, 18.4339f); + AddWaypoint(72, -8577.61f, 1147.56f, 18.0425f); + AddWaypoint(73, -8582.94f, 1119.74f, 17.9446f); + AddWaypoint(74, -8587.04f, 1108.23f, 23.5617f); + AddWaypoint(75, -8591.75f, 1092.06f, 31.7895f); + AddWaypoint(76, -8590.55f, 1081.19f, 34.9716f); + AddWaypoint(77, -8581.23f, 1069.06f, 37.5896f); + AddWaypoint(78, -8556.99f, 1036.63f, 58.1066f); + AddWaypoint(79, -8552.07f, 1036.05f, 59.3701f); + AddWaypoint(80, -8540.53f, 1034.77f, 59.5499f); + AddWaypoint(81, -8506.75f, 1004.00f, 59.4777f); + AddWaypoint(82, -8499.61f, 997.493f, 62.8523f); + AddWaypoint(83, -8491.04f, 988.066f, 71.3926f); + AddWaypoint(84, -8486.22f, 982.801f, 72.7378f); + AddWaypoint(85, -8480.07f, 987.677f, 74.4484f); + AddWaypoint(86, -8472.26f, 992.418f, 79.06f); + AddWaypoint(87, -8467.01f, 985.859f, 79.0153f); + AddWaypoint(88, -8472.19f, 981.732f, 80.4022f); + AddWaypoint(89, -8487.00f, 969.618f, 95.1357f); + AddWaypoint(90, -8489.09f, 968.22f, 95.8661f); + AddWaypoint(91, -8510.74f, 955.085f, 95.8028f); + AddWaypoint(92, -8536.74f, 960.804f, 96.039f); + AddWaypoint(93, -8551.91f, 968.695f, 96.4246f); + AddWaypoint(94, -8572.70f, 993.264f, 96.2515f); + AddWaypoint(95, -8606.88f, 966.778f, 99.4458f); + AddWaypoint(96, -8628.97f, 949.664f, 99.4458f); + AddWaypoint(97, -8645.33f, 950.136f, 100.145f); + AddWaypoint(98, -8689.67f, 924.848f, 101.074f); + AddWaypoint(99, -8709.18f, 911.939f, 101.24f); + AddWaypoint(100, -8721.28f, 926.965f, 100.662f); + AddWaypoint(101, -8736.84f, 946.412f, 101.379f); + AddWaypoint(102, -8744.55f, 956.053f, 100.058f); + AddWaypoint(103, -8729.78f, 975.011f, 98.5435f); + AddWaypoint(104, -8731.45f, 1005.82f, 95.6333f); + AddWaypoint(105, -8737.59f, 1041.12f, 92.3999f); + AddWaypoint(106, -8741.53f, 1060.28f, 89.7957f); + AddWaypoint(107, -8748.27f, 1069.01f, 90.1458f); + AddWaypoint(108, -8751.61f, 1079.31f, 90.7793f); + AddWaypoint(109, -8750.30f, 1074.79f, 90.6682f); + break; + case 1: + + AddWaypoint(1, -8281.31f, 1233.69f, 5.23063f); + AddWaypoint(2, -8309.31f, 1209.43f, 5.37823f); + AddWaypoint(3, -8450.17f, 1207.11f, 5.2094f); + AddWaypoint(4, -8531.66f, 1214.22f, 5.16238f); + AddWaypoint(5, -8566.33f, 1214.1f, 5.12533f); + AddWaypoint(6, -8572.91f, 1205.89f, 5.20212f); + AddWaypoint(7, -8574.04f, 1193.53f, 5.7967f); + AddWaypoint(8, -8574.68f, 1186.56f, 11.4009f); + AddWaypoint(9, -8575.35f, 1177.67f, 18.4339f); + AddWaypoint(10, -8577.61f, 1147.56f, 18.0425f); + AddWaypoint(11, -8582.94f, 1119.74f, 17.9446f); + AddWaypoint(12, -8587.04f, 1108.23f, 23.5617f); + AddWaypoint(13, -8591.75f, 1092.06f, 31.7895f); + AddWaypoint(14, -8590.55f, 1081.19f, 34.9716f); + AddWaypoint(15, -8581.23f, 1069.06f, 37.5896f); + AddWaypoint(16, -8556.99f, 1036.63f, 58.1066f); + AddWaypoint(17, -8552.07f, 1036.05f, 59.3701f); + AddWaypoint(18, -8540.53f, 1034.77f, 59.5499f); + AddWaypoint(19, -8506.75f, 1004.00f, 59.4777f); + AddWaypoint(20, -8499.61f, 997.493f, 62.8523f); + AddWaypoint(21, -8491.04f, 988.066f, 71.3926f); + AddWaypoint(22, -8486.22f, 982.801f, 72.7378f); + AddWaypoint(23, -8480.07f, 987.677f, 74.4484f); + AddWaypoint(24, -8472.26f, 992.418f, 79.06f); + AddWaypoint(25, -8467.01f, 985.859f, 79.0153f); + AddWaypoint(26, -8472.19f, 981.732f, 80.4022f); + AddWaypoint(27, -8487.00f, 969.618f, 95.1357f); + AddWaypoint(28, -8489.09f, 968.22f, 95.8661f); + AddWaypoint(29, -8510.74f, 955.085f, 95.8028f); + AddWaypoint(30, -8536.74f, 960.804f, 96.039f); + AddWaypoint(31, -8551.91f, 968.695f, 96.4246f); + AddWaypoint(32, -8572.70f, 993.264f, 96.2515f); + AddWaypoint(33, -8606.88f, 966.778f, 99.4458f); + AddWaypoint(34, -8628.97f, 949.664f, 99.4458f); + AddWaypoint(35, -8645.33f, 950.136f, 100.145f); + AddWaypoint(36, -8689.67f, 924.848f, 101.074f); + AddWaypoint(37, -8709.18f, 911.939f, 101.24f); + AddWaypoint(38, -8721.28f, 926.965f, 100.662f); + AddWaypoint(39, -8736.84f, 946.412f, 101.379f); + AddWaypoint(40, -8744.55f, 956.053f, 100.058f); + AddWaypoint(41, -8729.78f, 975.011f, 98.5435f); + AddWaypoint(42, -8731.45f, 1005.82f, 95.6333f); + AddWaypoint(43, -8737.59f, 1041.12f, 92.3999f); + AddWaypoint(44, -8741.53f, 1060.28f, 89.7957f); + AddWaypoint(45, -8748.27f, 1069.01f, 90.1458f); + AddWaypoint(46, -8751.61f, 1079.31f, 90.7793f); + AddWaypoint(47, -8750.30f, 1074.79f, 90.6682f); + break; + default: + sLog->outError("Unexpected movement variation (%i) in npcjainaAI::SetupMovement call!", variation); + return; + } + if(npcjainaAI* pEscortAI = CAST_AI(npcjainaAI, me->AI())) + { + pEscortAI->Start(true, true); + pEscortAI->SetDespawnAtEnd(false); + pEscortAI->SetDespawnAtFar(false); + me->setActive(true); + bStepping = true; + } + } + + void UpdateAI(const uint32 diff) + { + npc_escortAI::UpdateAI(diff); + + if(bStepping) + { + if(uiPhaseTimer <= diff) + { + switch(uiStep) + { + case 0: + SetRun(true); + JumpToNextStep(2000); + break; + case 1: + SetEscortPaused(false); + break; + case 2: + SetEscortPaused(false); + break; + case 3: + me->Mount(MOUNT_MODEL2); + me->SetSpeed(MOVE_RUN, SPEED_MOUNT); + JumpToNextStep(5000); + break; + case 4: + me->MonsterSay("En avant Héros.", LANG_UNIVERSAL, 0); + JumpToNextStep(10000); + case 5: + SetEscortPaused(false); + break; + case 6: + me->Unmount(); + me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetReactState(REACT_PASSIVE); + JumpToNextStep(5000); + break; + case 7: + + me->SummonCreature(100026, -8271.69f, 1233.43f, 5.23f, 3.05f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000); + me->SummonCreature(100026, -8271.81f, 1228.20f, 5.23f, 3.05f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000); + me->MonsterSay("Voici deux véhicules encore en état de marchent pour vous aider dans votre Combat", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 8: + me->MonsterSay("Placez-y vos deux meilleurs Pilotes Héros. Ils vous seront d'un grands soutiens!", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 9: + me->MonsterYell("Nous ferons payer aux Gobelins cette trahison!", LANG_UNIVERSAL, 0); + me->PlayDirectSound(11803); + me->HandleEmoteCommand(378); + JumpToNextStep(5000); + + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + break; + case 10: + + if(!WaveDone) + { + uint32 mobCounter = 0 , deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 11: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Premier Accostage au Port de Hurlevent Stoppé !"); + me->MonsterTextEmote("Premier Accostage au Port de Hurlevent Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 12: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 13: + + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 14: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Deuxième Accostage au Port de Hurlevent Stoppé !"); + me->MonsterTextEmote("Deuxième Accostage au Port de Hurlevent Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 15: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Courage Héros, il faut tenir bon!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 16: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 17: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Troisième Accostage au Port de Hurlevent Stoppé !"); + me->MonsterTextEmote("Troisième Accostage au Port de Hurlevent Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 18: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 19: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 20: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Quatrième Accostage au Port de Hurlevent Stoppé !"); + me->MonsterTextEmote("Quatrième Accostage au Port de Hurlevent Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 21: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Ne faiblissez pas dans l'effort! Il faut sauver notre Roi à tout prix!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 22: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 23: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Cinquième Accostage au Port de Hurlevent Stoppé !"); + me->MonsterTextEmote("Cinquième Accostage au Port de Hurlevent Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 24: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 25: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 26: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Sixième Accostage au Port de Hurlevent Stoppé !"); + me->MonsterTextEmote("Sixième Accostage au Port de Hurlevent Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 27: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Les Gobelins sont de redoutables Guerriers, mais vous Héros, vous l'êtes encore plus! Continuez !", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 28: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 29: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Septième Accostage au Port de Hurlevent Stoppé !"); + me->MonsterTextEmote("Septième Accostage au Port de Hurlevent Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 30: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 31: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 32: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Huitème Accostage au Port de Hurlevent Stoppé !"); + me->MonsterTextEmote("Huitème Accostage au Port de Hurlevent Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 33: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + me->MonsterYell("Bravo Héros, vous venez de repousser les assauts des gobelins! Préparez-vous ! Leur chef arrive!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + me->PlayDirectSound(11803); + JumpToNextStep(6000); + break; + case 34: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 35: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "L'Alliance a Défendu Vaillament Le Port de Hurvelent!"); + me->MonsterTextEmote("L'Alliance a Défendu Vaillament Le Port de Hurvelent!", 0, true); + JumpToNextStep(4000); + break; + case 36: + /* if (CAST_AI(npc_lycanthrope::npc_lycanthropeAI, me->AI())->Die1 == true && (CAST_AI(npc_bomberman::npc_bombermanAI, me->AI())->Die == true) + { */ + me->MonsterYell("Bravo Héros, vous venez à nouveau de prouver votre valeur! L'Assauts des Gobelins est stoppé. Hurlevent vous sera indéfiniment redevable!", LANG_UNIVERSAL, 0); + JumpToNextStep(4000); + break; + case 37: + SetEscortPaused(true); + JumpToNextStep(4000); + break; + case 38: + break; + } + }else uiPhaseTimer -= diff; + } + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npcjainaAI(creature); + } +}; + + + + + + + + + + + + + + + + + + + + + +//Partie Event Aux Portes de Hurlevent + +/***************************************/ +/* Archer Défias Wave Portes Hurlevent */ +/***************************************/ + + +class npc_archer_defias : public CreatureScript +{ +public: + npc_archer_defias() : CreatureScript("npc_archer_defias") { } + + struct npc_archer_defiasAI : public npc_escortAI + { + npc_archer_defiasAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + uint32 MultiTimer; + uint32 VolleyTimer; + uint32 SnakeTimer; + uint32 PoisonTimer; + uint32 TrapTimer; + uint32 HealTimer; + bool Haste; + bool Healed; + + void Reset() + { + MultiTimer = 8000; + VolleyTimer = 15000; + SnakeTimer = 40000; + PoisonTimer = 12000; + TrapTimer = 20000; + HealTimer = 60000; + SetupMovement(0); + Haste = false; + Healed = false; + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_ARCHERDEFIAS_AGGRO, LANG_UNIVERSAL, 0); + //me->AddAura(BEWITCHING_AURA, me); + me->AddAura(AURA_ROT, me); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_ARCHERDEFIAS_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_ARCHERDEFIAS_DEATH, LANG_UNIVERSAL, 0); + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 61: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -9170.11f, 345.345f, 85.7247f); + AddWaypoint(2, -9153.16f, 364.028f, 90.1565f); + AddWaypoint(3, -9135.25f, 380.996f, 90.5976f); + AddWaypoint(4, -9106.17f, 405.2f, 92.6421f); + AddWaypoint(5, -9081.44f, 422.146f, 92.5755f); + AddWaypoint(6, -9060.34f, 437.889f, 93.056f); + AddWaypoint(7, -9033.02f, 458.75f, 93.056f); + AddWaypoint(8, -9015.99f, 472.29f, 95.8848f); + AddWaypoint(9, -8987.66f, 494.498f, 96.5194f); + AddWaypoint(10, -8955.94f, 519.774f, 96.3553f); + AddWaypoint(11, -8945.66f, 510.554f, 96.2942f); + AddWaypoint(12, -8928.87f, 493.523f, 93.8399f); + AddWaypoint(13, -8908.4f, 508.351f, 93.8436f); + AddWaypoint(14, -8928.32f, 542.118f, 94.3018f); + AddWaypoint(15, -8908.70f, 556.803f, 93.5057f); + AddWaypoint(16, -8877.68f, 581.834f, 92.9949f); + AddWaypoint(17, -8842.08f, 612.808f, 92.8053f); + AddWaypoint(18, -8831.73f, 623.458f, 93.8528f); + AddWaypoint(19, -8847.10f, 649.193f, 96.6171f); + AddWaypoint(20, -8853.81f, 659.963f, 96.9273f); + AddWaypoint(21, -8827.03f, 677.331f, 97.5745f); + AddWaypoint(22, -8806.49f, 684.495f, 100.478f); + AddWaypoint(23, -8789.04f, 681.654f, 101.98f); + AddWaypoint(24, -8782.71f, 676.574f, 102.787f); + AddWaypoint(25, -8762.14f, 649.328f, 103.78f); + AddWaypoint(26, -8758.06f, 631.053f, 102.498f); + AddWaypoint(27, -8763.01f, 617.151f, 98.8399f); + AddWaypoint(28, -8770.30f, 609.288f, 97.2278f); + AddWaypoint(29, -8756.67f, 595.185f, 97.2162f); + AddWaypoint(30, -8737.25f, 574.747f, 97.4011f); + AddWaypoint(31, -8749.82f, 561.009f, 97.3976f); + AddWaypoint(32, -8745.01f, 556.247f, 97.8508f); + AddWaypoint(33, -8732.55f, 543.003f, 101.109f); + AddWaypoint(34, -8713.34f, 519.655f, 97.1719f); + AddWaypoint(35, -8721.46f, 511.546f, 96.6055f); + AddWaypoint(36, -8692.95f, 474.571f, 95.3211f); + AddWaypoint(37, -8715.8f, 452.022f, 97.1091f); + AddWaypoint(38, -8723.69f, 439.663f, 97.4109f); + AddWaypoint(39, -8720.37f, 422.488f, 97.8295f); + AddWaypoint(40, -8709.94f, 420.396f, 98.7172f); + AddWaypoint(41, -8702.78f, 405.761f, 99.9562f); + AddWaypoint(42, -8690.99f, 395.894f, 101.636f); + AddWaypoint(43, -8677.40f, 400.412f, 103.016f); + AddWaypoint(44, -8651.10f, 421.955f, 101.795f); + AddWaypoint(45, -8633.99f, 444.006f, 102.217f); + AddWaypoint(46, -8632.42f, 459.523f, 102.271f); + AddWaypoint(47, -8646.30f, 477.77f, 102.506f); + AddWaypoint(48, -8609.14f, 507.258f, 103.721f); + AddWaypoint(49, -8598.22f, 500.361f, 103.739f); + AddWaypoint(50, -8575.24f, 473.326f, 104.213f); + AddWaypoint(51, -8560.99f, 464.884f, 104.546f); + AddWaypoint(52, -8547.79f, 468.032f, 104.502f); + AddWaypoint(53, -8547.34f, 467.431f, 104.517f); + AddWaypoint(54, -8536.53f, 452.953f, 104.917f); + AddWaypoint(55, -8527.78f, 441.832f, 105.024f); + AddWaypoint(56, -8508.96f, 417.942f, 108.187f); + AddWaypoint(57, -8488.37f, 392.205f, 108.386f); + AddWaypoint(58, -8485.37f, 388.45f, 109.019f); + AddWaypoint(59, -8457.35f, 353.414f, 120.233f); + AddWaypoint(60, -8454.04f, 349.276f, 120.886f); + AddWaypoint(61, -8444.30f, 337.051f, 121.746f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_archer_defiasAI::SetupMovement call!", variation); + return; + } + + + if(npc_archer_defiasAI* pEscortAI = CAST_AI(npc_archer_defiasAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + // Tire Multiple toutes les 8 secondes + if(MultiTimer <= uiDiff) + { + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, MULTISHOT); + MultiTimer = 8000; + } else MultiTimer -= uiDiff; + + // Volley toutes les 15 secondes sur une cible random + if(VolleyTimer <= uiDiff) + { + DoCastAOE(VOLLEY); + VolleyTimer = 15000; + } else VolleyTimer -= uiDiff; + + // Pièges toutes les 10 secondes sur une cible random + if(SnakeTimer <= uiDiff) + { + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0)) + for(uint8 i = 1; i <= 3; i++) + { + me->SummonCreature(SUMMONED_SNAKE, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + } + SnakeTimer = 40000; + } else SnakeTimer -= uiDiff; + + // AOE Poison toutes les 12 secondes + /* if (PoisonTimer <= uiDiff) + { + DoCastAOE(BOLT_VOLLEY); + PoisonTimer = 12000; + } else PoisonTimer -= uiDiff; */ + + // Trap de glace sur le tank toutes les 20 secondes + if(TrapTimer <= uiDiff) + { + me->MonsterYell(SAY_ARCHERDEFIAS_ICE, LANG_UNIVERSAL, 0); + DoCast(me->getVictim(), ICE_TRAP); + TrapTimer = 20000; + } else TrapTimer -= uiDiff; + + // Se Heal toutes les 25 secondes + if(HealTimer <= uiDiff) + { + DoCast(me, REJUVENATION); + HealTimer = 60000; + } else HealTimer -= uiDiff; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_archer_defiasAI (pCreature); + } +}; + + + +/***************************************/ +/* Mage Défias Wave portes Hurlevent */ +/***************************************/ + + +class npc_mage_defias : public CreatureScript +{ +public: + npc_mage_defias() : CreatureScript("npc_mage_defias") { } + + struct npc_mage_defiasAI : public npc_escortAI + { + npc_mage_defiasAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint32 BurstTimer; + uint32 GriefTimer; + uint32 FlameTimer; + uint32 PiercingTimer; + uint32 HarvestTimer; + + void Reset() + { + BurstTimer = 30000; + GriefTimer = 20000; + FlameTimer = 15000; + PiercingTimer = 10000; + HarvestTimer = 45000; + SetupMovement(0); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_MAGEDEFIAS_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_MAGEDEFIAS_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_MAGEDEFIAS_DEATH, LANG_UNIVERSAL, 0); + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 61: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -9170.11f, 345.345f, 85.7247f); + AddWaypoint(2, -9153.16f, 364.028f, 90.1565f); + AddWaypoint(3, -9135.25f, 380.996f, 90.5976f); + AddWaypoint(4, -9106.17f, 405.2f, 92.6421f); + AddWaypoint(5, -9081.44f, 422.146f, 92.5755f); + AddWaypoint(6, -9060.34f, 437.889f, 93.056f); + AddWaypoint(7, -9033.02f, 458.75f, 93.056f); + AddWaypoint(8, -9015.99f, 472.29f, 95.8848f); + AddWaypoint(9, -8987.66f, 494.498f, 96.5194f); + AddWaypoint(10, -8955.94f, 519.774f, 96.3553f); + AddWaypoint(11, -8945.66f, 510.554f, 96.2942f); + AddWaypoint(12, -8928.87f, 493.523f, 93.8399f); + AddWaypoint(13, -8908.4f, 508.351f, 93.8436f); + AddWaypoint(14, -8928.32f, 542.118f, 94.3018f); + AddWaypoint(15, -8908.70f, 556.803f, 93.5057f); + AddWaypoint(16, -8877.68f, 581.834f, 92.9949f); + AddWaypoint(17, -8842.08f, 612.808f, 92.8053f); + AddWaypoint(18, -8831.73f, 623.458f, 93.8528f); + AddWaypoint(19, -8847.10f, 649.193f, 96.6171f); + AddWaypoint(20, -8853.81f, 659.963f, 96.9273f); + AddWaypoint(21, -8827.03f, 677.331f, 97.5745f); + AddWaypoint(22, -8806.49f, 684.495f, 100.478f); + AddWaypoint(23, -8789.04f, 681.654f, 101.98f); + AddWaypoint(24, -8782.71f, 676.574f, 102.787f); + AddWaypoint(25, -8762.14f, 649.328f, 103.78f); + AddWaypoint(26, -8758.06f, 631.053f, 102.498f); + AddWaypoint(27, -8763.01f, 617.151f, 98.8399f); + AddWaypoint(28, -8770.30f, 609.288f, 97.2278f); + AddWaypoint(29, -8756.67f, 595.185f, 97.2162f); + AddWaypoint(30, -8737.25f, 574.747f, 97.4011f); + AddWaypoint(31, -8749.82f, 561.009f, 97.3976f); + AddWaypoint(32, -8745.01f, 556.247f, 97.8508f); + AddWaypoint(33, -8732.55f, 543.003f, 101.109f); + AddWaypoint(34, -8713.34f, 519.655f, 97.1719f); + AddWaypoint(35, -8721.46f, 511.546f, 96.6055f); + AddWaypoint(36, -8692.95f, 474.571f, 95.3211f); + AddWaypoint(37, -8715.80f, 452.022f, 97.1091f); + AddWaypoint(38, -8723.69f, 439.663f, 97.4109f); + AddWaypoint(39, -8720.37f, 422.488f, 97.8295f); + AddWaypoint(40, -8709.94f, 420.396f, 98.7172f); + AddWaypoint(41, -8702.78f, 405.761f, 99.9562f); + AddWaypoint(42, -8690.99f, 395.894f, 101.636f); + AddWaypoint(43, -8677.40f, 400.412f, 103.016f); + AddWaypoint(44, -8651.10f, 421.955f, 101.795f); + AddWaypoint(45, -8633.99f, 444.006f, 102.217f); + AddWaypoint(46, -8632.42f, 459.523f, 102.271f); + AddWaypoint(47, -8646.30f, 477.77f, 102.506f); + AddWaypoint(48, -8609.14f, 507.258f, 103.721f); + AddWaypoint(49, -8598.22f, 500.361f, 103.739f); + AddWaypoint(50, -8575.24f, 473.326f, 104.213f); + AddWaypoint(51, -8560.99f, 464.884f, 104.546f); + AddWaypoint(52, -8547.79f, 468.032f, 104.502f); + AddWaypoint(53, -8547.34f, 467.431f, 104.517f); + AddWaypoint(54, -8536.53f, 452.953f, 104.917f); + AddWaypoint(55, -8527.78f, 441.832f, 105.024f); + AddWaypoint(56, -8508.96f, 417.942f, 108.187f); + AddWaypoint(57, -8488.37f, 392.205f, 108.386f); + AddWaypoint(58, -8485.37f, 388.45f, 109.019f); + AddWaypoint(59, -8457.35f, 353.414f, 120.233f); + AddWaypoint(60, -8454.04f, 349.276f, 120.886f); + AddWaypoint(61, -8444.30f, 337.051f, 121.746f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_defiasAI::SetupMovement call!", variation); + return; + } + + if(npc_mage_defiasAI* pEscortAI = CAST_AI(npc_mage_defiasAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + if(BurstTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + me->DeleteThreatList(); + DoCast(me->getVictim(), SHADOW_BURST); + BurstTimer = urand(25000,35000); + } else BurstTimer -= uiDiff; + + if(GriefTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0)) + DoCast(pTarget, STORM_OF_GRIEF); + GriefTimer = 20000; + } else GriefTimer -= uiDiff; + + if(PiercingTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_TOPAGGRO,0)) + DoCast(pTarget, PIERCING_SHADOW); + PiercingTimer = 10000; + } else PiercingTimer -= uiDiff; + + if(FlameTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + DoCastAOE(SHADOW_FLAME); + FlameTimer = 15000; + } else FlameTimer -= uiDiff; + + if(HarvestTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + me->MonsterYell(SAY_MAGEDEFIAS_SOUL, LANG_UNIVERSAL, 0); + DoCastAOE(HARVEST_SOUL); + HarvestTimer = 45000; + } else HarvestTimer -= uiDiff; + + DoSpellAttackIfReady(SHADOW_BOLT); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_defiasAI (pCreature); + } +}; + + +/*********************************************/ +/* Infanterie Défias Wave portes Hurlevent */ +/*********************************************/ + + +class npc_infanterie_defias : public CreatureScript +{ +public: + npc_infanterie_defias() : CreatureScript("npc_infanterie_defias") { } + + struct npc_infanterie_defiasAI : public npc_escortAI + { + npc_infanterie_defiasAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint32 EnrageTimer; + uint32 WoundTimer; + uint32 FeverTimer; + uint32 BiteTimer; + bool Enraged; + + void Reset() + { + EnrageTimer = 15000; + WoundTimer = 5000; + FeverTimer = 12000; + BiteTimer = 60000; + SetupMovement(0); + Enraged = false; + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_INFANTERIEDEFIAS_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_INFANTERIEDEFIAS_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_INFANTERIEDEFIAS_DEATH, LANG_UNIVERSAL, 0); + } + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 61: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -9170.11f, 345.345f, 85.7247f); + AddWaypoint(2, -9153.16f, 364.028f, 90.1565f); + AddWaypoint(3, -9135.25f, 380.996f, 90.5976f); + AddWaypoint(4, -9106.17f, 405.20f, 92.6421f); + AddWaypoint(5, -9081.44f, 422.146f, 92.5755f); + AddWaypoint(6, -9060.34f, 437.889f, 93.056f); + AddWaypoint(7, -9033.02f, 458.75f, 93.056f); + AddWaypoint(8, -9015.99f, 472.29f, 95.8848f); + AddWaypoint(9, -8987.66f, 494.498f, 96.5194f); + AddWaypoint(10, -8955.94f, 519.774f, 96.3553f); + AddWaypoint(11, -8945.66f, 510.554f, 96.2942f); + AddWaypoint(12, -8928.87f, 493.523f, 93.8399f); + AddWaypoint(13, -8908.40f, 508.351f, 93.8436f); + AddWaypoint(14, -8928.32f, 542.118f, 94.3018f); + AddWaypoint(15, -8908.7f, 556.803f, 93.5057f); + AddWaypoint(16, -8877.68f, 581.834f, 92.9949f); + AddWaypoint(17, -8842.08f, 612.808f, 92.8053f); + AddWaypoint(18, -8831.73f, 623.458f, 93.8528f); + AddWaypoint(19, -8847.10f, 649.193f, 96.6171f); + AddWaypoint(20, -8853.81f, 659.963f, 96.9273f); + AddWaypoint(21, -8827.03f, 677.331f, 97.5745f); + AddWaypoint(22, -8806.49f, 684.495f, 100.478f); + AddWaypoint(23, -8789.04f, 681.654f, 101.98f); + AddWaypoint(24, -8782.71f, 676.574f, 102.787f); + AddWaypoint(25, -8762.14f, 649.328f, 103.78f); + AddWaypoint(26, -8758.06f, 631.053f, 102.498f); + AddWaypoint(27, -8763.01f, 617.151f, 98.8399f); + AddWaypoint(28, -8770.30f, 609.288f, 97.2278f); + AddWaypoint(29, -8756.67f, 595.185f, 97.2162f); + AddWaypoint(30, -8737.25f, 574.747f, 97.4011f); + AddWaypoint(31, -8749.82f, 561.009f, 97.3976f); + AddWaypoint(32, -8745.01f, 556.247f, 97.8508f); + AddWaypoint(33, -8732.55f, 543.003f, 101.109f); + AddWaypoint(34, -8713.34f, 519.655f, 97.1719f); + AddWaypoint(35, -8721.46f, 511.546f, 96.6055f); + AddWaypoint(36, -8692.95f, 474.571f, 95.3211f); + AddWaypoint(37, -8715.80f, 452.022f, 97.1091f); + AddWaypoint(38, -8723.69f, 439.663f, 97.4109f); + AddWaypoint(39, -8720.37f, 422.488f, 97.8295f); + AddWaypoint(40, -8709.94f, 420.396f, 98.7172f); + AddWaypoint(41, -8702.78f, 405.761f, 99.9562f); + AddWaypoint(42, -8690.99f, 395.894f, 101.636f); + AddWaypoint(43, -8677.40f, 400.412f, 103.016f); + AddWaypoint(44, -8651.10f, 421.955f, 101.795f); + AddWaypoint(45, -8633.99f, 444.006f, 102.217f); + AddWaypoint(46, -8632.42f, 459.523f, 102.271f); + AddWaypoint(47, -8646.30f, 477.770f, 102.506f); + AddWaypoint(48, -8609.14f, 507.258f, 103.721f); + AddWaypoint(49, -8598.22f, 500.361f, 103.739f); + AddWaypoint(50, -8575.24f, 473.326f, 104.213f); + AddWaypoint(51, -8560.99f, 464.884f, 104.546f); + AddWaypoint(52, -8547.79f, 468.032f, 104.502f); + AddWaypoint(53, -8547.34f, 467.431f, 104.517f); + AddWaypoint(54, -8536.53f, 452.953f, 104.917f); + AddWaypoint(55, -8527.78f, 441.832f, 105.024f); + AddWaypoint(56, -8508.96f, 417.942f, 108.187f); + AddWaypoint(57, -8488.37f, 392.205f, 108.386f); + AddWaypoint(58, -8485.37f, 388.45f, 109.019f); + AddWaypoint(59, -8457.35f, 353.414f, 120.233f); + AddWaypoint(60, -8454.04f, 349.276f, 120.886f); + AddWaypoint(61, -8444.30f, 337.051f, 121.746f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_infanterie_defiasAI::SetupMovement call!", variation); + return; + } + + if(npc_infanterie_defiasAI* pEscortAI = CAST_AI(npc_infanterie_defiasAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + if(EnrageTimer <= uiDiff) + { + DoCast(me, ENRAGER); + EnrageTimer = urand(20000,25000); + } else EnrageTimer -= uiDiff; + + //Lance Tourbillion sur une cible en random + if(BiteTimer <= uiDiff) + { + DoCast(me, WORGEN_BIT); + //if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + //me->AddAura(WORGEN_CAL, pTarget); + BiteTimer = 60000; + } else BiteTimer -= uiDiff; + + if(WoundTimer <= uiDiff) + { + DoCast(me->getVictim(), MORTALE_WOUND); + WoundTimer = 5000; + } else WoundTimer -= uiDiff; + + if(FeverTimer <= uiDiff) + { + DoCastAOE(DECREPIT); + FeverTimer = 20000; + } else FeverTimer -= uiDiff; + + // Deviens enrager arrivé à 15% hp (augmente 50% attaque 50% domage) + if(HealthBelowPct(15) && !Enraged) + { + DoCast(me, FRENZI); + Enraged = true; + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_infanterie_defiasAI (pCreature); + } +}; + + + + +/*******************************************/ +/* Boss Défias Entrée Porte de Hurlevent */ +/*******************************************/ + + + + +class npc_lycanthrope : public CreatureScript +{ + public: + + npc_lycanthrope() : CreatureScript("npc_lycanthrope") { } + + struct npc_lycanthropeAI : public npc_escortAI + { + npc_lycanthropeAI(Creature *pCreature) : npc_escortAI(pCreature), summons(me) + { + Reset(); + } + + uint32 EnrageTimer; + uint32 WounTimer; + uint32 BiteTimer; + uint32 FeverTimer; + SummonList summons; + bool Enraged; + bool Worgen; + bool Haste; + bool health_45; + bool health_25; + bool Die1; + + void Reset() + { + summons.DespawnAll(); + me->RestoreDisplayId(); + EnrageTimer = 15000; + WounTimer = 5000; + BiteTimer = 30000; + FeverTimer = 12000; + Enraged = false; + Worgen = false; + Haste = false; + health_45 = false; + health_25 = false; + Die1 = false; + SetupMovement(0); + } + + + void SummonedCreatureDespawn(Creature* summon) + { + summons.Despawn(summon); + } + + void JustSummoned(Creature* summon) + { + summons.Summon(summon); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_LYCANTHROPE_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_LYCANTHROPE_SLAY, LANG_UNIVERSAL, 0); + // En cas de mort d'un joueurs, spawn d'un Worgen sur le corps + if(victim->GetTypeId() == TYPEID_PLAYER) + victim->SummonCreature(SUMMON_WORGEN, victim->GetPositionX(), victim->GetPositionY(), victim->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_LYCANTHROPE_DEATH, LANG_UNIVERSAL, 0); + summons.DespawnAll(); + me->RestoreDisplayId(); + Die1 = true; + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 61: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -9170.11f, 345.345f, 85.7247f); + AddWaypoint(2, -9153.16f, 364.028f, 90.1565f); + AddWaypoint(3, -9135.25f, 380.996f, 90.5976f); + AddWaypoint(4, -9106.17f, 405.20f, 92.6421f); + AddWaypoint(5, -9081.44f, 422.146f, 92.5755f); + AddWaypoint(6, -9060.34f, 437.889f, 93.056f); + AddWaypoint(7, -9033.02f, 458.75f, 93.056f); + AddWaypoint(8, -9015.99f, 472.29f, 95.8848f); + AddWaypoint(9, -8987.66f, 494.498f, 96.5194f); + AddWaypoint(10, -8955.94f, 519.774f, 96.3553f); + AddWaypoint(11, -8945.66f, 510.554f, 96.2942f); + AddWaypoint(12, -8928.87f, 493.523f, 93.8399f); + AddWaypoint(13, -8908.40f, 508.351f, 93.8436f); + AddWaypoint(14, -8928.32f, 542.118f, 94.3018f); + AddWaypoint(15, -8908.70f, 556.803f, 93.5057f); + AddWaypoint(16, -8877.68f, 581.834f, 92.9949f); + AddWaypoint(17, -8842.08f, 612.808f, 92.8053f); + AddWaypoint(18, -8831.73f, 623.458f, 93.8528f); + AddWaypoint(19, -8847.10f, 649.193f, 96.6171f); + AddWaypoint(20, -8853.81f, 659.963f, 96.9273f); + AddWaypoint(21, -8827.03f, 677.331f, 97.5745f); + AddWaypoint(22, -8806.49f, 684.495f, 100.478f); + AddWaypoint(23, -8789.04f, 681.654f, 101.98f); + AddWaypoint(24, -8782.71f, 676.574f, 102.787f); + AddWaypoint(25, -8762.14f, 649.328f, 103.78f); + AddWaypoint(26, -8758.06f, 631.053f, 102.498f); + AddWaypoint(27, -8763.01f, 617.151f, 98.8399f); + AddWaypoint(28, -8770.30f, 609.288f, 97.2278f); + AddWaypoint(29, -8756.67f, 595.185f, 97.2162f); + AddWaypoint(30, -8737.25f, 574.747f, 97.4011f); + AddWaypoint(31, -8749.82f, 561.009f, 97.3976f); + AddWaypoint(32, -8745.01f, 556.247f, 97.8508f); + AddWaypoint(33, -8732.55f, 543.003f, 101.109f); + AddWaypoint(34, -8713.34f, 519.655f, 97.1719f); + AddWaypoint(35, -8721.46f, 511.546f, 96.6055f); + AddWaypoint(36, -8692.95f, 474.571f, 95.3211f); + AddWaypoint(37, -8715.80f, 452.022f, 97.1091f); + AddWaypoint(38, -8723.69f, 439.663f, 97.4109f); + AddWaypoint(39, -8720.37f, 422.488f, 97.8295f); + AddWaypoint(40, -8709.94f, 420.396f, 98.7172f); + AddWaypoint(41, -8702.78f, 405.761f, 99.9562f); + AddWaypoint(42, -8690.99f, 395.894f, 101.636f); + AddWaypoint(43, -8677.40f, 400.412f, 103.016f); + AddWaypoint(44, -8651.10f, 421.955f, 101.795f); + AddWaypoint(45, -8633.99f, 444.006f, 102.217f); + AddWaypoint(46, -8632.42f, 459.523f, 102.271f); + AddWaypoint(47, -8646.30f, 477.77f, 102.506f); + AddWaypoint(48, -8609.14f, 507.258f, 103.721f); + AddWaypoint(49, -8598.22f, 500.361f, 103.739f); + AddWaypoint(50, -8575.24f, 473.326f, 104.213f); + AddWaypoint(51, -8560.99f, 464.884f, 104.546f); + AddWaypoint(52, -8547.79f, 468.032f, 104.502f); + AddWaypoint(53, -8547.34f, 467.431f, 104.517f); + AddWaypoint(54, -8536.53f, 452.953f, 104.917f); + AddWaypoint(55, -8527.78f, 441.832f, 105.024f); + AddWaypoint(56, -8508.96f, 417.942f, 108.187f); + AddWaypoint(57, -8488.37f, 392.205f, 108.386f); + AddWaypoint(58, -8485.37f, 388.45f, 109.019f); + AddWaypoint(59, -8457.35f, 353.414f, 120.233f); + AddWaypoint(60, -8454.04f, 349.276f, 120.886f); + AddWaypoint(61, -8444.30f, 337.051f, 121.746f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_lycanthropeAI::SetupMovement call!", variation); + return; + } + + if(npc_lycanthropeAI* pEscortAI = CAST_AI(npc_lycanthropeAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + // Enrage dure 8 secondes occurance entre 20et 25 secondes + if(EnrageTimer <= uiDiff) + { + DoCast(me, ENRAGE); + EnrageTimer = urand(20000,25000); + } else EnrageTimer -= uiDiff; + + // dure 5 secondes reduit de 5% les efet de soins (max 15 stack) + if(WounTimer <= uiDiff) + { + DoCast(me->getVictim(), MORTAL_WOUN); + WounTimer = 5000; + } else WounTimer -= uiDiff; + + // dure 20 secondes + if(FeverTimer <= uiDiff) + { + DoCastAOE(DECREPIT_FEVER); + FeverTimer = 20000; + } else FeverTimer -= uiDiff; + + // Transformation dure seconde et transforme en Worgen + // impossibilité de cast de sort + if(BiteTimer <= uiDiff) + { + me->MonsterTextEmote(EMOTE_WORGEN_BITE, 0, true); + DoCast(me, WORGEN_BITE); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + me->AddAura(WORGEN_CALL, pTarget); + BiteTimer = 30000; + } else BiteTimer -= uiDiff; + + // Arrivé à 75% hp transformation en Worgen + if(HealthBelowPct(75) && !Worgen) + { + me->SetDisplayId(26787); + me->MonsterYell(SAY_LYCANTHROPE_MORPH, LANG_UNIVERSAL, 0); + DoCast(me, ENRAGE); + EnrageTimer = urand(25000,35000); + Worgen = true; + } + + // Arrivé à 45 %hp redeviens normale + if(HealthBelowPct(45) && !health_45) + { + me->MonsterYell(SAY_LYCANTHROPE_DEMORPH, LANG_UNIVERSAL, 0); + me->SetDisplayId(2029); + health_45 = true; + Worgen = true; + } + + // Arrivé à 25% hp transformation en Worgen + if(HealthBelowPct(25) && !health_25) + { + me->SetDisplayId(26787); + me->MonsterYell(SAY_LYCANTHROPE_MORPH, LANG_UNIVERSAL, 0); + DoCast(me, ENRAGE); + EnrageTimer = urand(25000,35000); + health_25 = true; + Worgen = true; + } + + // S'enrage à 15% de vie (buff 50% vitesse d'attaque 50% dommage) + if(HealthBelowPct(15) && !Enraged) + { + DoCast(me, FRENZY); + Enraged = true; + } + + // Spawn sont trash arriver à 50% HP + if(HealthBelowPct(50) && !Haste ) + { + me->MonsterYell(SAY_TRASHLYCAN_SPAWN, LANG_UNIVERSAL, 0); + me->SummonCreature(SUMMON_TRASHLYCAN, me->GetPositionX()+1, me->GetPositionY()+1, me->GetPositionZ(), 0 /*, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILLISECONDS */); + Haste = true; + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_lycanthropeAI (pCreature); + } +}; + + + + +/*******************************************/ +/* Minion du Boss Entrée Porte Hurlevent */ +/*******************************************/ + + + + +class npc_trash_lycan : public CreatureScript +{ +public: + + npc_trash_lycan() : CreatureScript("npc_trash_lycan") { } + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_trash_lycanAI (pCreature); + } + + struct npc_trash_lycanAI : public ScriptedAI + { + npc_trash_lycanAI(Creature *pCreature) : ScriptedAI(pCreature), summons(me){} + + + uint32 MultiTimer; + uint32 VolleyTimer; + uint32 VortexTimer; + uint32 PoisonTimer; + uint32 TrapTimer; + uint32 HealTimer; + SummonList summons; + bool Haste; + bool Healed; + + + void Reset() + { + summons.DespawnAll(); + MultiTimer = 2000; + VolleyTimer = 15000; + VortexTimer = 30000; + PoisonTimer = 12000; + TrapTimer = 20000; + HealTimer = 25000; + Haste = false; + Healed = false; + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_TRASHLYCAN_AGGRO, LANG_UNIVERSAL, 0); + me->AddAura(SPELL_BEWITCHING_AURA, me); + me->AddAura(SPELL_AURA_ROT, me); + me->RemoveAurasDueToSpell(SPELL_ENERGY_STORM); + } + + void EnterEvadeMode() + { + summons.DespawnAll(); + _EnterEvadeMode(); + Reset(); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_TRASHLYCAN_SLAY, LANG_UNIVERSAL, 0); + me->RemoveAurasDueToSpell(SPELL_ENERGY_STORM); + summons.DespawnAll(); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_TRASHLYCAN_DEATH, LANG_UNIVERSAL, 0); + me->RemoveAurasDueToSpell(SPELL_ENERGY_STORM); + summons.DespawnAll(); + } + + void SummonedCreatureDespawn(Creature* summon) + { + summons.Despawn(summon); + } + + void JustSummoned(Creature* summon) + { + summons.Summon(summon); + } + + void UpdateAI(const uint32 uiDiff) + { + if(!UpdateVictim()) + return; + + if(me->HasUnitState(UNIT_STAT_CASTING)) + return; + + // Multishot ogni 2 sec + if(MultiTimer <= uiDiff) + { + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, SPELL_MULTISHOT); + MultiTimer = 8000; + } else MultiTimer -= uiDiff; + + // Ogni 10 sec casta Volley su un target random + if(VolleyTimer <= uiDiff) + { + DoCastAOE(SPELL_VOLLEY); + VolleyTimer = 15000; + } else VolleyTimer -= uiDiff; + + // Spawn des 4 Vortex + if(VortexTimer <= uiDiff) + { + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0)) + { + me->MonsterTextEmote(EMOTE_TRASHLYCAN_VORTEX, 0, true); + for(uint8 i = 0; i <= 5; i++) + { + me->GetMotionMaster()->Clear(); + DoCast(me, SPELL_ENERGY_STORM, true); // aura ennemi + + Creature* Vortex = DoSpawnCreature(SUMMONED_VORTEX, 0, 0, 0, 0,TEMPSUMMON_TIMED_DESPAWN, 30000); + { + if(Vortex) + { + Vortex->CastSpell(Vortex, SPELL_CYCLONE_PASSIVE, true); + Vortex->CastSpell(Vortex, SPELL_CYCLONE_VISUAL, true); + Vortex->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + Vortex->SetSpeed(MOVE_RUN, 1.0f); + Vortex->AI()->AttackStart(SelectTarget(SELECT_TARGET_RANDOM, 0)); + Vortex->SetInCombatWithZone(); + } + } + } + VortexTimer = 40000; + } + } else VortexTimer -= uiDiff; + + // Poison ad area ogni 10 sec + if(PoisonTimer <= uiDiff) + { + DoCastAOE(SPELL_BOLT_VOLLEY); + PoisonTimer = 12000; + } else PoisonTimer -= uiDiff; + + // Ogni 20 sec casta Frost Trap sul tank + if(TrapTimer <= uiDiff) + { + me->MonsterYell(SAY_TRASHLYCAN_ICE, LANG_UNIVERSAL, 0); + DoCast(me->getVictim(), SPELL_ICE_TRAP); + TrapTimer = 20000; + } else TrapTimer -= uiDiff; + + // Ogni 25 sec casta Rejuvenation + if(HealTimer <= uiDiff) + { + DoCast(me, SPELL_REJUVENATION); + HealTimer = 25000; + } else HealTimer -= uiDiff; + + DoMeleeAttackIfReady(); + } + }; + +}; + + +/***************************************************************************/ +/* Creature pour dégat des tornades du Minion Boss Entrée Porte Hurlevent */ +/***************************************************************************/ + +class mob_lycan_vortex : public CreatureScript +{ + public: + + mob_lycan_vortex() + : CreatureScript("mob_lycan_vortex") + { + } + + struct mob_lycan_vortexAI : public ScriptedAI + { + mob_lycan_vortexAI(Creature* c) : ScriptedAI(c) {} + + void Reset() {} + + void EnterCombat(Unit* /*pTarget*/) {} + + void SpellHit(Unit* caster, const SpellEntry* spell) + { + if(spell->Id == SPELL_ZAP_INFORM) + DoCast(caster, SPELL_ZAP_DAMAGE, true); + } + + void UpdateAI(const uint32 /*diff*/) + { + //Si le vortex perds la cible, il check une autre cible + if(me->IsWithinMeleeRange(me->getVictim())) + AttackStart(SelectTarget(SELECT_TARGET_RANDOM, 0)); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new mob_lycan_vortexAI(creature); + } +}; + + + +/****************************************************************************************************************************************************************************************************** +/*****************************************************************************************************************************************************************************************************/ + + + +//Partie Event Au Port de Hurlevent + + +/**********************************************/ +/* Infanterie Gobelin WavePort de Hurlevent */ +/**********************************************/ + + +class npc_infanterie_gobelin : public CreatureScript +{ +public: + npc_infanterie_gobelin() : CreatureScript("npc_infanterie_gobelin") { } + + struct npc_infanterie_gobelinAI : public npc_escortAI + { + npc_infanterie_gobelinAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint32 RageTimer; + uint32 TourbillonTimer; + uint32 ChaineTimer; + uint32 HurlementTimer; + bool health_15; + bool Enraged; + + void Reset() + { + RageTimer = 30000; + TourbillonTimer = 18000; + ChaineTimer = 15000; + HurlementTimer = 8000; + health_15 = false; + Enraged = false; + SetupMovement(0); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_INFANTERIEGOBELIN_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_INFANTERIEGOBELIN_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_INFANTERIEGOBELIN_DEATH, LANG_UNIVERSAL, 0); + + } + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 81: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + + AddWaypoint(1, -8292.07f, 1302.51f, 5.23119f); + AddWaypoint(2, -8292.57f, 1265.33f, 5.23119f); + AddWaypoint(3, -8292.82f, 1242.08f, 5.23071f); + AddWaypoint(4, -8300.48f, 1195.53f, 5.62398f); + AddWaypoint(5, -8300.66f, 1187.58f, 10.7239f); + AddWaypoint(6, -8300.96f, 1177.47f, 18.4496f); + AddWaypoint(7, -8300.67f, 1168.57f, 17.6878f); + AddWaypoint(8, -8301.41f, 1135.61f, 18.142f); + AddWaypoint(9, -8344.40f, 1135.74f, 18.7538f); + AddWaypoint(10, -8395.27f, 1135.89f, 17.9899f); + AddWaypoint(11, -8441.01f, 1136.17f, 18.8788f); + AddWaypoint(12, -8486.81f, 1135.76f, 18.0337f); + AddWaypoint(13, -8526.46f, 1133.86f, 18.2078f); + AddWaypoint(14, -8573.86f, 1131.58f, 17.9448f); + AddWaypoint(15, -8580.71f, 1118.37f, 17.9448f); + AddWaypoint(16, -8586.96f, 1105.54f, 25.0302f); + AddWaypoint(17, -8592.05f, 1092.98f, 31.534f); + AddWaypoint(18, -8586.94f, 1078.16f, 35.6756f); + AddWaypoint(19, -8575.93f, 1063.11f, 41.4909f); + AddWaypoint(20, -8556.01f, 1038.89f, 57.7437f); + AddWaypoint(21, -8550.60f, 1036.61f, 59.3816f); + AddWaypoint(22, -8537.39f, 1035.38f, 59.6563f); + AddWaypoint(23, -8520.49f, 1017.92f, 59.9289f); + AddWaypoint(24, -8504.76f, 1003.97f, 59.4779f); + AddWaypoint(25, -8492.47f, 990.335f, 69.3196f); + AddWaypoint(26, -8487.73f, 984.923f, 72.7377f); + AddWaypoint(27, -8486.04f, 982.774f, 72.7377f); + AddWaypoint(28, -8479.34f, 988.42f, 75.4748f); + AddWaypoint(29, -8472.62f, 993.994f, 79.0666f); + AddWaypoint(30, -8466.89f, 987.086f, 79.0392f); + AddWaypoint(31, -8472.30f, 981.689f, 80.4825f); + AddWaypoint(32, -8487.22f, 969.506f, 95.3373f); + AddWaypoint(33, -8503.03f, 956.192f, 95.7726f); + AddWaypoint(34, -8530.41f, 956.374f, 95.979f); + AddWaypoint(35, -8545.89f, 962.205f, 96.5852f); + AddWaypoint(36, -8571.21f, 992.509f, 96.2303f); + AddWaypoint(37, -8590.40f, 977.718f, 97.7525f); + AddWaypoint(38, -8632.35f, 944.139f, 99.52f); + AddWaypoint(39, -8628.55f, 927.301f, 100.021f); + AddWaypoint(40, -8639.78f, 915.532f, 99.2767f); + AddWaypoint(41, -8682.28f, 878.042f, 97.0173f); + AddWaypoint(42, -8650.31f, 837.51f, 96.7324f); + AddWaypoint(43, -8633.90f, 814.968f, 96.63f); + AddWaypoint(44, -8635.92f, 795.093f, 96.6511f); + AddWaypoint(45, -8611.89f, 762.076f, 96.7211f); + AddWaypoint(46, -8630.45f, 743.696f, 96.8469f); + AddWaypoint(47, -8637.82f, 736.079f, 96.7511f); + AddWaypoint(48, -8614.08f, 707.148f, 96.7303f); + AddWaypoint(49, -8597.65f, 718.661f, 96.6746f); + AddWaypoint(50, -8562.42f, 674.358f, 97.0155f); + AddWaypoint(51, -8538.72f, 689.058f, 97.6675f); + AddWaypoint(52, -8534.28f, 686.213f, 97.678f); + AddWaypoint(53, -8525.75f, 674.779f, 102.326f); + AddWaypoint(54, -8513.67f, 657.729f, 101.134f); + AddWaypoint(55, -8510.26f, 652.719f, 100.292f); + AddWaypoint(56, -8508.31f, 650.421f, 100.292f); + AddWaypoint(57, -8489.67f, 674.499f, 100.593f); + AddWaypoint(58, -8474.67f, 693.871f, 99.5743f); + AddWaypoint(59, -8469.26f, 686.765f, 99.3762f); + AddWaypoint(60, -8443.32f, 654.567f, 92.9822f); + AddWaypoint(61, -8459.60f, 638.725f, 91.8592f); + AddWaypoint(62, -8474.07f, 627.534f, 93.6498f); + AddWaypoint(63, -8473.15f, 619.384f, 94.4642f); + AddWaypoint(64, -8451.50f, 586.494f, 94.1368f); + AddWaypoint(65, -8460.44f, 577.074f, 94.8139f); + AddWaypoint(66, -8479.75f, 562.473f, 97.2927f); + AddWaypoint(67, -8503.78f, 533.833f, 97.6536f); + AddWaypoint(68, -8542.97f, 501.789f, 98.6207f); + AddWaypoint(69, -8539.00f, 494.086f, 99.6874f); + AddWaypoint(70, -8535.82f, 487.926f, 101.081f); + AddWaypoint(71, -8538.93f, 482.365f, 101.795f); + AddWaypoint(72, -8547.08f, 471.504f, 104.281f); + AddWaypoint(73, -8545.23f, 464.217f, 104.435f); + AddWaypoint(74, -8536.71f, 453.436f, 104.917f); + AddWaypoint(75, -8520.64f, 432.804f, 106.221f); + AddWaypoint(76, -8504.19f, 412.137f, 108.386f); + AddWaypoint(77, -8488.66f, 392.631f, 108.386f); + AddWaypoint(78, -8476.69f, 377.605f, 112.491f); + AddWaypoint(79, -8457.82f, 353.765f, 120.091f); + AddWaypoint(80, -8455.13f, 350.37f, 120.886f); + AddWaypoint(81, -8446.93f, 339.988f, 121.33f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_infanterie_gobelinAI::SetupMovement call!", variation); + return; + } + + if(npc_infanterie_gobelinAI* pEscortAI = CAST_AI(npc_infanterie_gobelinAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + + + + void SetInCombat() + { + Map *map = me->GetMap(); + return; + + Map::PlayerList const &PlayerList = map->GetPlayers(); + for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) + { + if(Player* i_pl = i->getSource()) + if(!i_pl->isGameMaster() && i_pl->isAlive() && me->GetDistance(i_pl) <= 100) + { + me->SetInCombatWith(i_pl); + i_pl->SetInCombatWith(me); + me->AddThreat(i_pl, 1.0f); + } + } + } + + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + if(RageTimer <= uiDiff) + { + DoCast(me, RAGE); + RageTimer = urand(28000,30000); + } else RageTimer -= uiDiff; + + //Lance Tourbillion + if(TourbillonTimer <= uiDiff) + { + DoCast(me, TOURBILLON); + TourbillonTimer = 18000; + } else TourbillonTimer -= uiDiff; + + //Lance Chain de Cristal sur sa cible + if(ChaineTimer <= uiDiff) + { + DoCast(me->getVictim(), CHAINCRISTAL); + ChaineTimer = 15000; + } else ChaineTimer -= uiDiff; + + + //Lance Hurlement sur une cible random + if(HurlementTimer <= uiDiff) + { + + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + DoCast(pTarget, HURLEMENT); + HurlementTimer = 8000; + } else HurlementTimer -= uiDiff; + + + // Deviens enrager arrivé à 15% hp (augmente 50% attaque 50% domage) + if(HealthBelowPct(15) && !Enraged) + { + DoCast(me, FRENZ); + Enraged = true; + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_infanterie_gobelinAI (pCreature); + } +}; + + + + + + + +/**********************************************/ +/* Mage Gobelin WavePort de Hurlevent */ +/**********************************************/ + + +class npc_mage_gobelin : public CreatureScript +{ +public: + npc_mage_gobelin() : CreatureScript("npc_mage_gobelin") { } + + struct npc_mage_gobelinAI : public npc_escortAI + { + npc_mage_gobelinAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint32 ChainTimer; + uint32 LavaTimer; + uint32 FlameTimer; + uint32 ShockTimer; + bool Haste; + bool Healed; + + void Reset() + { + ChainTimer = 8000; + LavaTimer = 15000; + FlameTimer = 4000; + ShockTimer = 20000; + Haste = false; + Healed = false; + SetupMovement(0); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_MAGEGOBELIN_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_MAGEGOBELIN_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_MAGEGOBELIN_DEATH, LANG_UNIVERSAL, 0); + } + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 81: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8292.07f, 1302.51f, 5.23119f); + AddWaypoint(2, -8292.57f, 1265.33f, 5.23119f); + AddWaypoint(3, -8292.82f, 1242.08f, 5.23071f); + AddWaypoint(4, -8300.48f, 1195.53f, 5.62398f); + AddWaypoint(5, -8300.66f, 1187.58f, 10.7239f); + AddWaypoint(6, -8300.96f, 1177.47f, 18.4496f); + AddWaypoint(7, -8300.67f, 1168.57f, 17.6878f); + AddWaypoint(8, -8301.41f, 1135.61f, 18.142f); + AddWaypoint(9, -8344.40f, 1135.74f, 18.7538f); + AddWaypoint(10, -8395.27f, 1135.89f, 17.9899f); + AddWaypoint(11, -8441.01f, 1136.17f, 18.8788f); + AddWaypoint(12, -8486.81f, 1135.76f, 18.0337f); + AddWaypoint(13, -8526.46f, 1133.86f, 18.2078f); + AddWaypoint(14, -8573.86f, 1131.58f, 17.9448f); + AddWaypoint(15, -8580.71f, 1118.37f, 17.9448f); + AddWaypoint(16, -8586.96f, 1105.54f, 25.0302f); + AddWaypoint(17, -8592.05f, 1092.98f, 31.534f); + AddWaypoint(18, -8586.94f, 1078.16f, 35.6756f); + AddWaypoint(19, -8575.93f, 1063.11f, 41.4909f); + AddWaypoint(20, -8556.01f, 1038.89f, 57.7437f); + AddWaypoint(21, -8550.60f, 1036.61f, 59.3816f); + AddWaypoint(22, -8537.39f, 1035.38f, 59.6563f); + AddWaypoint(23, -8520.49f, 1017.92f, 59.9289f); + AddWaypoint(24, -8504.76f, 1003.97f, 59.4779f); + AddWaypoint(25, -8492.47f, 990.335f, 69.3196f); + AddWaypoint(26, -8487.73f, 984.923f, 72.7377f); + AddWaypoint(27, -8486.04f, 982.774f, 72.7377f); + AddWaypoint(28, -8479.34f, 988.42f, 75.4748f); + AddWaypoint(29, -8472.62f, 993.994f, 79.0666f); + AddWaypoint(30, -8466.89f, 987.086f, 79.0392f); + AddWaypoint(31, -8472.30f, 981.689f, 80.4825f); + AddWaypoint(32, -8487.22f, 969.506f, 95.3373f); + AddWaypoint(33, -8503.03f, 956.192f, 95.7726f); + AddWaypoint(34, -8530.41f, 956.374f, 95.979f); + AddWaypoint(35, -8545.89f, 962.205f, 96.5852f); + AddWaypoint(36, -8571.21f, 992.509f, 96.2303f); + AddWaypoint(37, -8590.40f, 977.718f, 97.7525f); + AddWaypoint(38, -8632.35f, 944.139f, 99.52f); + AddWaypoint(39, -8628.55f, 927.301f, 100.021f); + AddWaypoint(40, -8639.78f, 915.532f, 99.2767f); + AddWaypoint(41, -8682.28f, 878.042f, 97.0173f); + AddWaypoint(42, -8650.31f, 837.51f, 96.7324f); + AddWaypoint(43, -8633.90f, 814.968f, 96.63f); + AddWaypoint(44, -8635.92f, 795.093f, 96.6511f); + AddWaypoint(45, -8611.89f, 762.076f, 96.7211f); + AddWaypoint(46, -8630.45f, 743.696f, 96.8469f); + AddWaypoint(47, -8637.82f, 736.079f, 96.7511f); + AddWaypoint(48, -8614.08f, 707.148f, 96.7303f); + AddWaypoint(49, -8597.65f, 718.661f, 96.6746f); + AddWaypoint(50, -8562.42f, 674.358f, 97.0155f); + AddWaypoint(51, -8538.72f, 689.058f, 97.6675f); + AddWaypoint(52, -8534.28f, 686.213f, 97.678f); + AddWaypoint(53, -8525.75f, 674.779f, 102.326f); + AddWaypoint(54, -8513.67f, 657.729f, 101.134f); + AddWaypoint(55, -8510.26f, 652.719f, 100.292f); + AddWaypoint(56, -8508.31f, 650.421f, 100.292f); + AddWaypoint(57, -8489.67f, 674.499f, 100.593f); + AddWaypoint(58, -8474.67f, 693.871f, 99.5743f); + AddWaypoint(59, -8469.26f, 686.765f, 99.3762f); + AddWaypoint(60, -8443.32f, 654.567f, 92.9822f); + AddWaypoint(61, -8459.60f, 638.725f, 91.8592f); + AddWaypoint(62, -8474.07f, 627.534f, 93.6498f); + AddWaypoint(63, -8473.15f, 619.384f, 94.4642f); + AddWaypoint(64, -8451.50f, 586.494f, 94.1368f); + AddWaypoint(65, -8460.44f, 577.074f, 94.8139f); + AddWaypoint(66, -8479.75f, 562.473f, 97.2927f); + AddWaypoint(67, -8503.78f, 533.833f, 97.6536f); + AddWaypoint(68, -8542.97f, 501.789f, 98.6207f); + AddWaypoint(69, -8539.00f, 494.086f, 99.6874f); + AddWaypoint(70, -8535.82f, 487.926f, 101.081f); + AddWaypoint(71, -8538.93f, 482.365f, 101.795f); + AddWaypoint(72, -8547.08f, 471.504f, 104.281f); + AddWaypoint(73, -8545.23f, 464.217f, 104.435f); + AddWaypoint(74, -8536.71f, 453.436f, 104.917f); + AddWaypoint(75, -8520.64f, 432.804f, 106.221f); + AddWaypoint(76, -8504.19f, 412.137f, 108.386f); + AddWaypoint(77, -8488.66f, 392.631f, 108.386f); + AddWaypoint(78, -8476.69f, 377.605f, 112.491f); + AddWaypoint(79, -8457.82f, 353.765f, 120.091f); + AddWaypoint(80, -8455.13f, 350.37f, 120.886f); + AddWaypoint(81, -8446.93f, 339.988f, 121.33f); + + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_gobelinAI::SetupMovement call!", variation); + return; + } + + if(npc_mage_gobelinAI* pEscortAI = CAST_AI(npc_mage_gobelinAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + // Chain éclair toutes les 10/15 secondes + if(ChainTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + DoCast(me->getVictim(), CHAIN_LIGHTNING); + ChainTimer = urand(10000,15000); + } else ChainTimer -= uiDiff; + + // cast lava burst toutes les 15 secondes sur une cible random + if(LavaTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + DoCast(pTarget, LAVA_BURST); + DoCast(me, LIGHTNING_SHIELD); + LavaTimer = 15000; + } else LavaTimer -= uiDiff; + + // cast tremblement de terre toutes les 20 secondes sur une cible random + if(ShockTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + DoCast(pTarget, EARTH_SHOCK); + DoCast(me, LIGHTNING_RING); + ShockTimer = 20000; + } else ShockTimer -= uiDiff; + + // cast flame chock sur le tank toutes les 12 secondes + if(FlameTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + DoCast(me->getVictim(), FLAME_SHOCK); + FlameTimer = 12000; + } else FlameTimer -= uiDiff; + + // A 25% hp se soigne avec healing wave + if(HealthBelowPct(25) && !Healed) + { + me->InterruptNonMeleeSpells(false); + DoCast(me, HEALING_WAVE); + ChainTimer = 8000; + LavaTimer = 10000; + FlameTimer = 4000; + ShockTimer = 15000; + Healed = true; + } + + // spawn des elementaire ) 50% hp + if(HealthBelowPct(50) && !Haste) + { + me->InterruptNonMeleeSpells(false); + DoCast(me, BLOODLUST); + me->MonsterYell(SAY_MAGEGOBELIN_BLOOD, LANG_UNIVERSAL, 0); + me->SummonCreature(SUMMON_AIR_ELEMENTAL, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + Haste = true; + } + + DoSpellAttackIfReady(LIGHTNING_BOLT); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_gobelinAI (pCreature); + } +}; + + + + + +/**********************************************/ +/* Ingenieur Gobelin WavePort de Hurlevent */ +/**********************************************/ + + + +// script de l'image du joueur + +class npc_stolen_soul : public CreatureScript +{ +public: + npc_stolen_soul() : CreatureScript("npc_stolen_soul") { } + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_stolen_soulAI (creature); + } + + struct npc_stolen_soulAI : public ScriptedAI + { + npc_stolen_soulAI(Creature* c) : ScriptedAI(c) { } + + uint8 myClass; + uint32 Class_Timer; + + void Reset() + { + Class_Timer = 1000; + } + + void EnterCombat(Unit* /*pWho*/) + { } + + void SetMyClass(uint8 myclass) + { + myClass = myclass; + } + + void UpdateAI(const uint32 uiDiff) + { + if(!UpdateVictim()) + return; + + if(Class_Timer <= uiDiff) + { + switch(myClass) + { + case CLASS_WARRIOR: + DoCast(me->getVictim(), MORTAL_STRIKE); + Class_Timer = 6000; + break; + case CLASS_PALADIN: + DoCast(me->getVictim(), HAMMER_OF_JUSTICE); + Class_Timer = 6000; + break; + case CLASS_HUNTER: + DoCast(me->getVictim(), FREEZING_TRAP); + Class_Timer = 20000; + break; + case CLASS_ROGUE: + DoCast(me->getVictim(), HEMORRHAGE); + Class_Timer = 10000; + break; + case CLASS_PRIEST: + DoCast(me->getVictim(), MIND_FLAY); + Class_Timer = 5000; + break; + case CLASS_SHAMAN: + DoCast(me->getVictim(), FROSTSHOCK); + Class_Timer = 8000; + break; + case CLASS_MAGE: + DoCast(me->getVictim(), FIREBALL); + Class_Timer = 5000; + break; + case CLASS_WARLOCK: + DoCast(me->getVictim(), CURSE_OF_AGONY); + Class_Timer = 20000; + break; + case CLASS_DRUID: + DoCast(me->getVictim(), MOONFIRE); + Class_Timer = 10000; + break; + } + } else Class_Timer -= uiDiff; + + DoMeleeAttackIfReady(); + } + }; +}; + + + + + +class npc_ingenieur_gobelin : public CreatureScript +{ +public: + npc_ingenieur_gobelin() : CreatureScript("npc_ingenieur_gobelin") { } + + struct npc_ingenieur_gobelinAI : public npc_escortAI + { + npc_ingenieur_gobelinAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint8 soulclass; + uint32 soulmodel; + uint64 soulholder; + uint32 StolenSoul_Timer; + uint32 ExplosionTimer; + uint32 CriTimer; + uint32 RocketTimer; + uint32 BombesTimer; + + void Reset() + { + soulmodel = 0; + soulholder = 0; + soulclass = 0; + StolenSoul_Timer = 25000 + rand()% 10000; + ExplosionTimer = 8000; + CriTimer = 35000; + RocketTimer = 12000; + BombesTimer = 42000; + SetupMovement(0); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_INGENIEURGOBELIN_AGGRO, LANG_UNIVERSAL, 0); + } + + void JustSummoned(Creature* summoned) + { + if(summoned->GetEntry() == SUMMON_STOLEN_SOUL) + { + summoned->CastSpell(summoned, STOLEN_SOUL_VISUAL, false); + summoned->SetDisplayId(soulmodel); + summoned->setFaction(me->getFaction()); + + if(Unit* target = Unit::GetUnit(*me, soulholder)) + { + CAST_AI(npc_stolen_soul::npc_stolen_soulAI, summoned->AI())->SetMyClass(soulclass); + summoned->AI()->AttackStart(target); + } + } + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_INGENIEURGOBELIN_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_INGENIEURGOBELIN_DEATH, LANG_UNIVERSAL, 0); + } + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 81:SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8292.07f, 1302.51f, 5.23119f); + AddWaypoint(2, -8292.57f, 1265.33f, 5.23119f); + AddWaypoint(3, -8292.82f, 1242.08f, 5.23071f); + AddWaypoint(4, -8300.48f, 1195.53f, 5.62398f); + AddWaypoint(5, -8300.66f, 1187.58f, 10.7239f); + AddWaypoint(6, -8300.96f, 1177.47f, 18.4496f); + AddWaypoint(7, -8300.67f, 1168.57f, 17.6878f); + AddWaypoint(8, -8301.41f, 1135.61f, 18.142f); + AddWaypoint(9, -8344.40f, 1135.74f, 18.7538f); + AddWaypoint(10, -8395.27f, 1135.89f, 17.9899f); + AddWaypoint(11, -8441.01f, 1136.17f, 18.8788f); + AddWaypoint(12, -8486.81f, 1135.76f, 18.0337f); + AddWaypoint(13, -8526.46f, 1133.86f, 18.2078f); + AddWaypoint(14, -8573.86f, 1131.58f, 17.9448f); + AddWaypoint(15, -8580.71f, 1118.37f, 17.9448f); + AddWaypoint(16, -8586.96f, 1105.54f, 25.0302f); + AddWaypoint(17, -8592.05f, 1092.98f, 31.534f); + AddWaypoint(18, -8586.94f, 1078.16f, 35.6756f); + AddWaypoint(19, -8575.93f, 1063.11f, 41.4909f); + AddWaypoint(20, -8556.01f, 1038.89f, 57.7437f); + AddWaypoint(21, -8550.60f, 1036.61f, 59.3816f); + AddWaypoint(22, -8537.39f, 1035.38f, 59.6563f); + AddWaypoint(23, -8520.49f, 1017.92f, 59.9289f); + AddWaypoint(24, -8504.76f, 1003.97f, 59.4779f); + AddWaypoint(25, -8492.47f, 990.335f, 69.3196f); + AddWaypoint(26, -8487.73f, 984.923f, 72.7377f); + AddWaypoint(27, -8486.04f, 982.774f, 72.7377f); + AddWaypoint(28, -8479.34f, 988.42f, 75.4748f); + AddWaypoint(29, -8472.62f, 993.994f, 79.0666f); + AddWaypoint(30, -8466.89f, 987.086f, 79.0392f); + AddWaypoint(31, -8472.30f, 981.689f, 80.4825f); + AddWaypoint(32, -8487.22f, 969.506f, 95.3373f); + AddWaypoint(33, -8503.03f, 956.192f, 95.7726f); + AddWaypoint(34, -8530.41f, 956.374f, 95.979f); + AddWaypoint(35, -8545.89f, 962.205f, 96.5852f); + AddWaypoint(36, -8571.21f, 992.509f, 96.2303f); + AddWaypoint(37, -8590.40f, 977.718f, 97.7525f); + AddWaypoint(38, -8632.35f, 944.139f, 99.52f); + AddWaypoint(39, -8628.55f, 927.301f, 100.021f); + AddWaypoint(40, -8639.78f, 915.532f, 99.2767f); + AddWaypoint(41, -8682.28f, 878.042f, 97.0173f); + AddWaypoint(42, -8650.31f, 837.51f, 96.7324f); + AddWaypoint(43, -8633.90f, 814.968f, 96.63f); + AddWaypoint(44, -8635.92f, 795.093f, 96.6511f); + AddWaypoint(45, -8611.89f, 762.076f, 96.7211f); + AddWaypoint(46, -8630.45f, 743.696f, 96.8469f); + AddWaypoint(47, -8637.82f, 736.079f, 96.7511f); + AddWaypoint(48, -8614.08f, 707.148f, 96.7303f); + AddWaypoint(49, -8597.65f, 718.661f, 96.6746f); + AddWaypoint(50, -8562.42f, 674.358f, 97.0155f); + AddWaypoint(51, -8538.72f, 689.058f, 97.6675f); + AddWaypoint(52, -8534.28f, 686.213f, 97.678f); + AddWaypoint(53, -8525.75f, 674.779f, 102.326f); + AddWaypoint(54, -8513.67f, 657.729f, 101.134f); + AddWaypoint(55, -8510.26f, 652.719f, 100.292f); + AddWaypoint(56, -8508.31f, 650.421f, 100.292f); + AddWaypoint(57, -8489.67f, 674.499f, 100.593f); + AddWaypoint(58, -8474.67f, 693.871f, 99.5743f); + AddWaypoint(59, -8469.26f, 686.765f, 99.3762f); + AddWaypoint(60, -8443.32f, 654.567f, 92.9822f); + AddWaypoint(61, -8459.60f, 638.725f, 91.8592f); + AddWaypoint(62, -8474.07f, 627.534f, 93.6498f); + AddWaypoint(63, -8473.15f, 619.384f, 94.4642f); + AddWaypoint(64, -8451.50f, 586.494f, 94.1368f); + AddWaypoint(65, -8460.44f, 577.074f, 94.8139f); + AddWaypoint(66, -8479.75f, 562.473f, 97.2927f); + AddWaypoint(67, -8503.78f, 533.833f, 97.6536f); + AddWaypoint(68, -8542.97f, 501.789f, 98.6207f); + AddWaypoint(69, -8539.00f, 494.086f, 99.6874f); + AddWaypoint(70, -8535.82f, 487.926f, 101.081f); + AddWaypoint(71, -8538.93f, 482.365f, 101.795f); + AddWaypoint(72, -8547.08f, 471.504f, 104.281f); + AddWaypoint(73, -8545.23f, 464.217f, 104.435f); + AddWaypoint(74, -8536.71f, 453.436f, 104.917f); + AddWaypoint(75, -8520.64f, 432.804f, 106.221f); + AddWaypoint(76, -8504.19f, 412.137f, 108.386f); + AddWaypoint(77, -8488.66f, 392.631f, 108.386f); + AddWaypoint(78, -8476.69f, 377.605f, 112.491f); + AddWaypoint(79, -8457.82f, 353.765f, 120.091f); + AddWaypoint(80, -8455.13f, 350.37f, 120.886f); + AddWaypoint(81, -8446.93f, 339.988f, 121.33f); + + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_ingenieur_gobelinAI::SetupMovement call!", variation); + return; + } + + if(npc_ingenieur_gobelinAI* pEscortAI = CAST_AI(npc_ingenieur_gobelinAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if (!UpdateVictim()) + return; + + //Crée une image d'un des joueurs en random + if(StolenSoul_Timer <= uiDiff) + { + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + if(target->GetTypeId() == TYPEID_PLAYER) + { + if(me->IsNonMeleeSpellCasted(false)) + me->InterruptNonMeleeSpells(true); + soulmodel = target->GetDisplayId(); + soulholder = target->GetGUID(); + soulclass = target->getClass(); + DoCast(target, STOLEN_SOUL); + me->SummonCreature(SUMMON_STOLEN_SOUL, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); + StolenSoul_Timer = 20000 + rand()% 10000; + } else StolenSoul_Timer = 1000; + } + } else StolenSoul_Timer -= uiDiff; + + + //Cast une vague explosive autour de lui + if(ExplosionTimer <= uiDiff) + { + DoCast(me, EXPLOSION); + ExplosionTimer = 8000; + } else ExplosionTimer -= uiDiff; + + //Lance Peur sur une clible random et ceux autour de la cible du random + if(CriTimer <= uiDiff) + { + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, CRI); + CriTimer = 35000; + } + } else CriTimer -= uiDiff; + + //Lance une rocket sur une cible random + if(RocketTimer <= uiDiff) + { + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, ROCKET); + RocketTimer = 12000; + } + } else RocketTimer -= uiDiff; + + + //Lance une Bombe qui stun sur une cible random + if(BombesTimer <= uiDiff) + { + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, BOMBES); + BombesTimer = 42000; + } + } else BombesTimer -= uiDiff; + + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_ingenieur_gobelinAI (pCreature); + } +}; + + + + +/*******************************************/ +/* Boss Gobelin Port de Hurlevent */ +/*******************************************/ + + + +class npc_bomberman : public CreatureScript +{ +public: + npc_bomberman() : CreatureScript("npc_bomberman") { } + + CreatureAI* GetAI(Creature* pCreature) + { + return new npc_bombermanAI (pCreature); + } + + struct npc_bombermanAI : public npc_escortAI + { + npc_bombermanAI(Creature *pCreature) : npc_escortAI(pCreature), Summons(me) + { + Reset(); + } + + + uint32 Timer; + uint32 BerserkTimer; + uint32 WoundTimer; + uint32 BombTimer; + uint32 NetTimer; + uint32 BladeTimer; + uint32 ShrinkRayTimer; + + uint32 TowerTimer; + uint32 AlarmTimer; + + SummonList Summons; + Unit* pTarget; + bool Die; + +/******************************************************************************************************************************************** + Fonction a tester pour une suite à l'event (essayer de récuperer 2 variables dans 2 class différente pour les utiliser dans une 3 iem + ********************************************************************************************************************************************/ +/* struct AnyDeadUnitCheck + { + bool operator()(Unit* u) { return !u->isAlive(); } + }; +*/ + + void JustSummoned(Creature* summon) + { + Summons.Summon(summon); + } + + void SummonedCreatureDespawn(Creature* summon) + { + Summons.Despawn(summon); + } + + void Reset() + { + BerserkTimer = 600000; /* Berserk au bout de 10min */ + WoundTimer = 5000 ; /* Débuff tanks pour switch */ + BombTimer = 30000 ; /* Bombe vivante */ + NetTimer = 30000 ; /* Piège la cible de Bombe vivante */ + BladeTimer = 10000 ; /* Coup au cac */ + ShrinkRayTimer = 15000 ; /* Cône de débuff */ + TowerTimer = 60000 ; /* Invoque Tower */ + AlarmTimer = 45000 ; /* Invoque Alarm */ + Summons.DespawnAll(); + SetupMovement(0); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_BOMBERMAN_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + switch (urand(0, 2)) + { + case 0: + me->MonsterYell(SAY_KILL_ONE, LANG_UNIVERSAL, 0); + break; + case 1: + me->MonsterYell(SAY_KILL_TWO, LANG_UNIVERSAL, 0); + break; + case 2: + me->MonsterYell(SAY_KILL_THREE, LANG_UNIVERSAL, 0); + break; + } + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_BOMBERMAN_DEATH, LANG_UNIVERSAL, 0); + Summons.DespawnAll(); + //me->CAST_AI(npc_bomberman::npc_bombermanAI, me->AI())->Die == true; + Die = true; + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 81: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8292.07f, 1302.51f, 5.23119f); + AddWaypoint(2, -8292.57f, 1265.33f, 5.23119f); + AddWaypoint(3, -8292.82f, 1242.08f, 5.23071f); + AddWaypoint(4, -8300.48f, 1195.53f, 5.62398f); + AddWaypoint(5, -8300.66f, 1187.58f, 10.7239f); + AddWaypoint(6, -8300.96f, 1177.47f, 18.4496f); + AddWaypoint(7, -8300.67f, 1168.57f, 17.6878f); + AddWaypoint(8, -8301.41f, 1135.61f, 18.142f); + AddWaypoint(9, -8344.40f, 1135.74f, 18.7538f); + AddWaypoint(10, -8395.27f, 1135.89f, 17.9899f); + AddWaypoint(11, -8441.01f, 1136.17f, 18.8788f); + AddWaypoint(12, -8486.81f, 1135.76f, 18.0337f); + AddWaypoint(13, -8526.46f, 1133.86f, 18.2078f); + AddWaypoint(14, -8573.86f, 1131.58f, 17.9448f); + AddWaypoint(15, -8580.71f, 1118.37f, 17.9448f); + AddWaypoint(16, -8586.96f, 1105.54f, 25.0302f); + AddWaypoint(17, -8592.05f, 1092.98f, 31.534f); + AddWaypoint(18, -8586.94f, 1078.16f, 35.6756f); + AddWaypoint(19, -8575.93f, 1063.11f, 41.4909f); + AddWaypoint(20, -8556.01f, 1038.89f, 57.7437f); + AddWaypoint(21, -8550.60f, 1036.61f, 59.3816f); + AddWaypoint(22, -8537.39f, 1035.38f, 59.6563f); + AddWaypoint(23, -8520.49f, 1017.92f, 59.9289f); + AddWaypoint(24, -8504.76f, 1003.97f, 59.4779f); + AddWaypoint(25, -8492.47f, 990.335f, 69.3196f); + AddWaypoint(26, -8487.73f, 984.923f, 72.7377f); + AddWaypoint(27, -8486.04f, 982.774f, 72.7377f); + AddWaypoint(28, -8479.34f, 988.42f, 75.4748f); + AddWaypoint(29, -8472.62f, 993.994f, 79.0666f); + AddWaypoint(30, -8466.89f, 987.086f, 79.0392f); + AddWaypoint(31, -8472.30f, 981.689f, 80.4825f); + AddWaypoint(32, -8487.22f, 969.506f, 95.3373f); + AddWaypoint(33, -8503.03f, 956.192f, 95.7726f); + AddWaypoint(34, -8530.41f, 956.374f, 95.979f); + AddWaypoint(35, -8545.89f, 962.205f, 96.5852f); + AddWaypoint(36, -8571.21f, 992.509f, 96.2303f); + AddWaypoint(37, -8590.40f, 977.718f, 97.7525f); + AddWaypoint(38, -8632.35f, 944.139f, 99.52f); + AddWaypoint(39, -8628.55f, 927.301f, 100.021f); + AddWaypoint(40, -8639.78f, 915.532f, 99.2767f); + AddWaypoint(41, -8682.28f, 878.042f, 97.0173f); + AddWaypoint(42, -8650.31f, 837.51f, 96.7324f); + AddWaypoint(43, -8633.90f, 814.968f, 96.63f); + AddWaypoint(44, -8635.92f, 795.093f, 96.6511f); + AddWaypoint(45, -8611.89f, 762.076f, 96.7211f); + AddWaypoint(46, -8630.45f, 743.696f, 96.8469f); + AddWaypoint(47, -8637.82f, 736.079f, 96.7511f); + AddWaypoint(48, -8614.08f, 707.148f, 96.7303f); + AddWaypoint(49, -8597.65f, 718.661f, 96.6746f); + AddWaypoint(50, -8562.42f, 674.358f, 97.0155f); + AddWaypoint(51, -8538.72f, 689.058f, 97.6675f); + AddWaypoint(52, -8534.28f, 686.213f, 97.678f); + AddWaypoint(53, -8525.75f, 674.779f, 102.326f); + AddWaypoint(54, -8513.67f, 657.729f, 101.134f); + AddWaypoint(55, -8510.26f, 652.719f, 100.292f); + AddWaypoint(56, -8508.31f, 650.421f, 100.292f); + AddWaypoint(57, -8489.67f, 674.499f, 100.593f); + AddWaypoint(58, -8474.67f, 693.871f, 99.5743f); + AddWaypoint(59, -8469.26f, 686.765f, 99.3762f); + AddWaypoint(60, -8443.32f, 654.567f, 92.9822f); + AddWaypoint(61, -8459.60f, 638.725f, 91.8592f); + AddWaypoint(62, -8474.07f, 627.534f, 93.6498f); + AddWaypoint(63, -8473.15f, 619.384f, 94.4642f); + AddWaypoint(64, -8451.50f, 586.494f, 94.1368f); + AddWaypoint(65, -8460.44f, 577.074f, 94.8139f); + AddWaypoint(66, -8479.75f, 562.473f, 97.2927f); + AddWaypoint(67, -8503.78f, 533.833f, 97.6536f); + AddWaypoint(68, -8542.97f, 501.789f, 98.6207f); + AddWaypoint(69, -8539.00f, 494.086f, 99.6874f); + AddWaypoint(70, -8535.82f, 487.926f, 101.081f); + AddWaypoint(71, -8538.93f, 482.365f, 101.795f); + AddWaypoint(72, -8547.08f, 471.504f, 104.281f); + AddWaypoint(73, -8545.23f, 464.217f, 104.435f); + AddWaypoint(74, -8536.71f, 453.436f, 104.917f); + AddWaypoint(75, -8520.64f, 432.804f, 106.221f); + AddWaypoint(76, -8504.19f, 412.137f, 108.386f); + AddWaypoint(77, -8488.66f, 392.631f, 108.386f); + AddWaypoint(78, -8476.69f, 377.605f, 112.491f); + AddWaypoint(79, -8457.82f, 353.765f, 120.091f); + AddWaypoint(80, -8455.13f, 350.37f, 120.886f); + AddWaypoint(81, -8446.93f, 339.988f, 121.33f); + + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_bombermanAI::SetupMovement call!", variation); + return; + } + + if(npc_bombermanAI* pEscortAI = CAST_AI(npc_bombermanAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + Die = false; + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + // Berserk + if(BerserkTimer <= uiDiff) + { + DoCast(me, BERSERK); + BerserkTimer = 600000; + } else BerserkTimer -= uiDiff; + + if(WoundTimer <= uiDiff) + { + DoCast(me->getVictim(), MORTA_WOUND); + WoundTimer = 5000; + } else WoundTimer -= uiDiff; + + // Bombe dure 5 secondes avant de péter + if(BombTimer <= uiDiff) + { + me->MonsterYell(SAY_LIVING_BOMB, LANG_UNIVERSAL, 0); + if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + { + me->AddAura(LIVING_BOMB, pTarget); + me->AddAura(SLOW_FALL, pTarget); + } + BombTimer = 10000; + } else BombTimer -= uiDiff; + + // Piège dure 5 secondes + if(NetTimer <= uiDiff) + { + if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + DoCast(pTarget, ELECTRIFIED_NET); + NetTimer = 30000; + } else NetTimer -= uiDiff; + + // Coup au cac toutes les 10s + if(BladeTimer <= uiDiff) + { + DoCast(me->getVictim(), SAW_BLADE); + BladeTimer = 10000; + } else BladeTimer -= uiDiff; + + // Débuff au cac dure 15s + if(ShrinkRayTimer <= uiDiff) + { + DoCast(me->getVictim(), SUPER_SHRINK_RAY); + ShrinkRayTimer = 15000; + } else ShrinkRayTimer -= uiDiff; + + + // Spawn des Adds + + if(TowerTimer <= uiDiff) + { + me->MonsterYell(SAY_TOWER_SPAWN, LANG_UNIVERSAL, 0); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + pTarget->SummonCreature(SUMMON_TOWER, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + TowerTimer = 60000; + } else TowerTimer -= uiDiff; + + if(AlarmTimer <= uiDiff) + { + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + pTarget->SummonCreature(SUMMON_ALARM, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + AlarmTimer = 45000; + } else AlarmTimer -= uiDiff; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_bombermanAI (pCreature); + } +}; + + + + + +/*********************************************************/ +/* 1er Minion du Boss Gobelin Port de Hurlevent */ +/*********************************************************/ + + +class npc_add_bomberman_tower : public CreatureScript +{ +public: + npc_add_bomberman_tower() : CreatureScript("npc_add_bomberman_tower") { } + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_add_bomberman_towerAI (pCreature); + } + + struct npc_add_bomberman_towerAI : public ScriptedAI + { + npc_add_bomberman_towerAI(Creature *pCreature) : ScriptedAI(pCreature){} + + uint32 Timer; + uint32 NovaTimer; + uint32 WaterTimer; + uint32 DefenseTimer; + + void Reset() + { + NovaTimer = 9000; /* Nova toutes les 9sec */ + WaterTimer = 10000; /* Bolt toutes les 10sec */ + DefenseTimer = 15000; /* Boubou toutes les 15sec */ + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_TOWER_DEATH, LANG_UNIVERSAL, 0); + } + + void UpdateAI(const uint32 uiDiff) + { + if(!UpdateVictim()) + return; + + if(NovaTimer <= uiDiff) + { + DoCastAOE(ICE_NOVA); + NovaTimer = 9000; + } else NovaTimer -= uiDiff; + + if(WaterTimer <= uiDiff) + { + DoCast(me->getVictim(), WATER_SPRAY); + WaterTimer = 10000; + } else WaterTimer -= uiDiff; + + if(HealthBelowPct(20)) + { + if(DefenseTimer <= uiDiff) + { + DoCast(me, DEFENSE_MATRIX_TOWER); + DefenseTimer = 15000; + } else DefenseTimer -= uiDiff; + } + + if(HealthBelowPct(1)) + { + DoCast(me, EXPLOSION_TOWER); + } + + DoMeleeAttackIfReady(); + } + }; + +}; + + +/*********************************************************/ +/* 2ème Minion du Boss Gobelin Port de Hurlevent */ +/*********************************************************/ + + +class npc_add_bomberman_alarm : public CreatureScript +{ +public: + npc_add_bomberman_alarm() : CreatureScript("npc_add_bomberman_alarm") { } + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_add_bomberman_alarmAI (pCreature); + } + + struct npc_add_bomberman_alarmAI : public ScriptedAI + { + npc_add_bomberman_alarmAI(Creature *pCreature) : ScriptedAI(pCreature), Summons(me){} + + uint32 Timer; + uint32 AlertTimer; + uint32 DefenseTimer; + + SummonList Summons; + + void JustSummoned(Creature* summon) + { + Summons.Summon(summon); + } + + void SummonedCreatureDespawn(Creature* summon) + { + Summons.Despawn(summon); + } + + void Reset() + { + AlertTimer = 10000; + DefenseTimer = 15000; /* Boubou toutes les 15sec */ + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_TOWER_DEATH, LANG_UNIVERSAL, 0); + } + + void UpdateAI(const uint32 uiDiff) + { + if(!UpdateVictim()) + return; + + /* Lance une alerte et spawn une bombe */ + if(AlertTimer <= uiDiff) + { + me->MonsterYell(SAY_ALARM_ALERT, LANG_UNIVERSAL, 0); + me->SummonCreature(SUMMON_BOMB, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + AlertTimer = 10000; + } else AlertTimer -= uiDiff; + + if(HealthBelowPct(20)) + { + if(DefenseTimer <= uiDiff) + { + DoCast(me, DEFENSE_MATRIX_ALARM); + DefenseTimer = 15000; + } else DefenseTimer -= uiDiff; + } + + if(HealthBelowPct(1)) + { + DoCast(me, EXPLOSION_ALARM); + } + + DoMeleeAttackIfReady(); + } + }; + +}; + + +/*********************************************************/ +/* 3ème Minion du Boss Gobelin Port de Hurlevent */ +/*********************************************************/ + + + +class npc_add_alarm_bomb : public CreatureScript +{ +public: + npc_add_alarm_bomb() : CreatureScript("npc_add_alarm_bomb") { } + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_add_alarm_bombAI (pCreature); + } + + struct npc_add_alarm_bombAI : public ScriptedAI + { + npc_add_alarm_bombAI(Creature *pCreature) : ScriptedAI(pCreature), Summons(me){} + + uint32 Timer; + uint32 ExplosionTimer; + + SummonList Summons; + + void JustSummoned(Creature* summon) + { + Summons.Summon(summon); + } + + void SummonedCreatureDespawn(Creature* summon) + { + Summons.Despawn(summon); + } + + void Reset() + { + ExplosionTimer = 7000; + } + + void EnterCombat(Unit* /*who*/) + { + me->AddAura(LIVING_BOMB_MINE, me); + } + + /* Spawn une mine à sa mort, despawn au bout de 5min */ + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_BOMB_DEATH, LANG_UNIVERSAL, 0); + me->SummonCreature(SUMMON_MINE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 300000); + } + + void UpdateAI(const uint32 uiDiff) + { + if(!UpdateVictim()) + return; + + if(ExplosionTimer <= uiDiff) + { + DoCast(me, EXPLOSION_BOMB); + ExplosionTimer = 7000; + } else ExplosionTimer -= uiDiff; + + DoMeleeAttackIfReady(); + } + }; + +}; + + + +/*********************************************/ +/* Mage de Bataille A2 Wave port Hurlevent */ +/*********************************************/ + + +class npc_mage_bataille : public CreatureScript +{ +public: + npc_mage_bataille() : CreatureScript("npc_mage_bataille") { } + + struct npc_mage_batailleAI : public npc_escortAI + { + npc_mage_batailleAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 2:SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8299.42f, 1217.07f, 5.1512f); + AddWaypoint(2, -8299.25f, 1234.92f, 5.23036f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_batailleAI::SetupMovement call!", variation); + return; + } + + if(npc_mage_batailleAI* pEscortAI = CAST_AI(npc_mage_batailleAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_batailleAI (pCreature); + } +}; + + + + + +/*********************************************/ +/* Mage de Bataille1 A2 Wave port Hurlevent */ +/*********************************************/ + + +class npc_mage_bataille1 : public CreatureScript +{ +public: + npc_mage_bataille1() : CreatureScript("npc_mage_bataille1") { } + + struct npc_mage_bataille1AI : public npc_escortAI + { + npc_mage_bataille1AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 2:SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8296.72f, 1213.33f, 5.26202f); + AddWaypoint(2, -8296.69f, 1231.59f, 5.23146f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_bataille1AI::SetupMovement call!", variation); + return; + } + + if(npc_mage_bataille1AI* pEscortAI = CAST_AI(npc_mage_bataille1AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_bataille1AI (pCreature); + } +}; + + + + +/*********************************************/ +/* Mage de Bataille2 A2 Wave port Hurlevent */ +/*********************************************/ + + +class npc_mage_bataille2 : public CreatureScript +{ +public: + npc_mage_bataille2() : CreatureScript("npc_mage_bataille2") { } + + struct npc_mage_bataille2AI : public npc_escortAI + { + npc_mage_bataille2AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 2: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8293.85f, 1210.68f, 5.3449f); + AddWaypoint(2, -8293.36f, 1233.89f, 5.23072f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_bataille2AI::SetupMovement call!", variation); + return; + } + + if(npc_mage_bataille2AI* pEscortAI = CAST_AI(npc_mage_bataille2AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_bataille2AI (pCreature); + } +}; + + + +/*********************************************/ +/* Mage de Bataille3 A2 Wave port Hurlevent */ +/*********************************************/ + + +class npc_mage_bataille3 : public CreatureScript +{ +public: + npc_mage_bataille3() : CreatureScript("npc_mage_bataille3") { } + + struct npc_mage_bataille3AI : public npc_escortAI + { + npc_mage_bataille3AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 2: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8280.58f, 1218.55f, 5.1211f); + AddWaypoint(2, -8280.87f, 1235.17f, 5.23041f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_bataille3AI::SetupMovement call!", variation); + return; + } + + if(npc_mage_bataille3AI* pEscortAI = CAST_AI(npc_mage_bataille3AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_bataille3AI (pCreature); + } +}; + + +/*********************************************/ +/* Mage de Bataille4 A2 Wave port Hurlevent */ +/*********************************************/ + + +class npc_mage_bataille4 : public CreatureScript +{ +public: + npc_mage_bataille4() : CreatureScript("npc_mage_bataille4") { } + + struct npc_mage_bataille4AI : public npc_escortAI + { + npc_mage_bataille4AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 2: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8284.78f, 1215.06f, 5.19952f); + AddWaypoint(2, -8284.36f, 1231.50f, 5.2307f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_bataille4AI::SetupMovement call!", variation); + return; + } + + if(npc_mage_bataille4AI* pEscortAI = CAST_AI(npc_mage_bataille4AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_bataille4AI (pCreature); + } +}; + + + +/*********************************************/ +/* Mage de Bataille5 A2 Wave port Hurlevent */ +/*********************************************/ + + +class npc_mage_bataille5 : public CreatureScript +{ +public: + npc_mage_bataille5() : CreatureScript("npc_mage_bataille5") { } + + struct npc_mage_bataille5AI : public npc_escortAI + { + npc_mage_bataille5AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 2: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8288.11f, 1211.59f, 5.31996f); + AddWaypoint(2, -8287.50f, 1235.10f, 5.23063f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_bataille5AI::SetupMovement call!", variation); + return; + } + + if(npc_mage_bataille5AI* pEscortAI = CAST_AI(npc_mage_bataille5AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if (!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_bataille5AI (pCreature); + } +}; + + + + + +/*********************************************/ +/* Nain de Bataille A2 Wave Entrée Hurlevent */ +/*********************************************/ + + +class npc_nain_bataille : public CreatureScript +{ +public: + npc_nain_bataille() : CreatureScript("npc_nain_bataille") { } + + struct npc_nain_batailleAI : public npc_escortAI + { + npc_nain_batailleAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 6: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -9004.03f, 407.834f, 72.8211f); + AddWaypoint(2, -9015.10f, 421.896f, 79.7957f); + AddWaypoint(3, -9029.61f, 440.307f, 90.1843f); + AddWaypoint(4, -9033.94f, 445.817f, 93.2958f); + AddWaypoint(5, -9047.18f, 435.771f, 93.0561f); + AddWaypoint(6, -9058.13f, 427.734f, 93.0561f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_nain_batailleAI::SetupMovement call!", variation); + return; + } + + if(npc_nain_batailleAI* pEscortAI = CAST_AI(npc_nain_batailleAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_nain_batailleAI (pCreature); + } +}; + + + + +/*********************************************/ +/* Nain de Bataille1 A2 Wave Entrée Hurlevent */ +/*********************************************/ + + +class npc_nain_bataille1 : public CreatureScript +{ +public: + npc_nain_bataille1() : CreatureScript("npc_nain_bataille1") { } + + struct npc_nain_bataille1AI : public npc_escortAI + { + npc_nain_bataille1AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 7: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -9000.62f, 407.729f, 73.1527f); + AddWaypoint(2, -9011.71f, 421.691f, 78.8454f); + AddWaypoint(3, -9028.47f, 442.946f, 90.8426f); + AddWaypoint(4, -9030.82f, 445.986f, 92.8048f); + AddWaypoint(5, -9033.92f, 449.784f, 93.2956f); + AddWaypoint(6, -9048.57f, 438.357f, 93.0561f); + AddWaypoint(7, -9057.44f, 431.337f, 93.0561f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_nain_bataille1AI::SetupMovement call!", variation); + return; + } + + if(npc_nain_bataille1AI* pEscortAI = CAST_AI(npc_nain_bataille1AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_nain_bataille1AI (pCreature); + } +}; + + + + +/*********************************************/ +/* Nain de Bataille2 A2 Wave Entrée Hurlevent */ +/*********************************************/ + + +class npc_nain_bataille2 : public CreatureScript +{ +public: + npc_nain_bataille2() : CreatureScript("npc_nain_bataille2") { } + + struct npc_nain_bataille2AI : public npc_escortAI + { + npc_nain_bataille2AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 6: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -8999.22f, 409.852f, 73.1341f); + AddWaypoint(2, -9001.87f, 413.883f, 73.4745f); + AddWaypoint(3, -9018.91f, 435.859f, 85.8151f); + AddWaypoint(4, -9026.35f, 445.440f, 91.1945f); + AddWaypoint(5, -9033.34f, 454.592f, 93.0559f); + AddWaypoint(6, -9061.54f, 432.395f, 93.0559f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_nain_bataille2AI::SetupMovement call!", variation); + return; + } + + if(npc_nain_bataille2AI* pEscortAI = CAST_AI(npc_nain_bataille2AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_nain_bataille2AI (pCreature); + } +}; + + + + + + + + + +/*********************************************/ +/* Nain de Bataille3 A2 Wave Entrée Hurlevent */ +/*********************************************/ + + +class npc_nain_bataille3 : public CreatureScript +{ +public: + npc_nain_bataille3() : CreatureScript("npc_nain_bataille3") { } + + struct npc_nain_bataille3AI : public npc_escortAI + { + npc_nain_bataille3AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 6: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -9067.66f, 499.437f, 75.3264f); + AddWaypoint(2, -9065.04f, 496.191f, 75.9691f); + AddWaypoint(3, -9043.15f, 468.842f, 91.2948f); + AddWaypoint(4, -9035.90f, 458.572f, 93.0563f); + AddWaypoint(5, -9053.11f, 445.273f, 93.0563f); + AddWaypoint(6, -9064.57f, 436.427f, 93.0563f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_nain_bataille3AI::SetupMovement call!", variation); + return; + } + + if(npc_nain_bataille3AI* pEscortAI = CAST_AI(npc_nain_bataille3AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_nain_bataille3AI (pCreature); + } +}; + + + + + +/*********************************************/ +/* Nain de Bataille4 A2 Wave Entrée Hurlevent */ +/*********************************************/ + + +class npc_nain_bataille4 : public CreatureScript +{ +public: + npc_nain_bataille4() : CreatureScript("npc_nain_bataille4") { } + + struct npc_nain_bataille4AI : public npc_escortAI + { + npc_nain_bataille4AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 6: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -9068.89f, 495.839f, 75.6429f); + AddWaypoint(2, -9063.18f, 489.000f, 78.9743f); + AddWaypoint(3, -9045.65f, 466.878f, 91.4865f); + AddWaypoint(4, -9040.13f, 459.739f, 93.0562f); + AddWaypoint(5, -9056.63f, 446.661f, 93.0562f); + AddWaypoint(6, -9064.04f, 440.398f, 93.0562f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_nain_bataille4AI::SetupMovement call!", variation); + return; + } + + if(npc_nain_bataille4AI* pEscortAI = CAST_AI(npc_nain_bataille4AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_nain_bataille4AI (pCreature); + } +}; + + + + + + +/*********************************************/ +/* Nain de Bataille5 A2 Wave Entrée Hurlevent */ +/*********************************************/ + + +class npc_nain_bataille5 : public CreatureScript +{ +public: + npc_nain_bataille5() : CreatureScript("npc_nain_bataille5") { } + + struct npc_nain_bataille5AI : public npc_escortAI + { + npc_nain_bataille5AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 6: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, -9071.22f, 492.501f, 76.7766f); + AddWaypoint(2, -9069.09f, 489.541f, 77.4318f); + AddWaypoint(3, -9049.99f, 465.758f, 90.9363f); + AddWaypoint(4, -9047.13f, 461.725f, 93.2955f); + AddWaypoint(5, -9060.08f, 447.311f, 93.0559f); + AddWaypoint(6, -9067.96f, 441.067f, 93.0559f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_nain_bataille5AI::SetupMovement call!", variation); + return; + } + + if(npc_nain_bataille5AI* pEscortAI = CAST_AI(npc_nain_bataille5AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_nain_bataille5AI (pCreature); + } +}; + + + + +/* void OnGameObjectCreate(GameObject* go) + { + switch(go->GetEntry()) + { + case + break; + + + case GO_TRIBUNAL_CONSOLE: + uiTribunalConsole = go->GetGUID(); + break; + case GO_TRIBUNAL_CHEST: + case GO_TRIBUNAL_CHEST_HERO: + uiTribunalChest = go->GetGUID(); + if(m_auiEncounter[2] == DONE) + go->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_INTERACT_COND); + break; + case GO_TRIBUNAL_SKYROOM_FLOOR: + uiTribunalSkyFloor = go->GetGUID(); + break; + } + } + +*/ + + + + +/* void SetInCombat() + { + Map *map = me->GetMap(); + if(!map->IsDungeon()) + return; + + Map::PlayerList const &PlayerList = map->GetPlayers(); + for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) + { + if(Player* i_pl = i->getSource()) + if(!i_pl->isGameMaster() && i_pl->isAlive() && me->GetDistance(i_pl) <= 100) + { + me->SetInCombatWith(i_pl); + i_pl->SetInCombatWith(me); + me->AddThreat(i_pl, 1.0f); + } + } + } +*/ + + +void AddSC_npcevent() +{ + new npcevent; + new npcmarcus; + new npcjaina; + new npc_archer_defias; + new npc_mage_defias; + new npc_infanterie_defias; + new npc_lycanthrope; + new npc_trash_lycan; + new mob_lycan_vortex; + new npc_mage_gobelin; + new npc_infanterie_gobelin; + new npc_ingenieur_gobelin; + new npc_stolen_soul; + new npc_bomberman; + new npc_add_bomberman_tower; + new npc_add_bomberman_alarm; + new npc_add_alarm_bomb; + new npc_mage_bataille; + new npc_mage_bataille1; + new npc_mage_bataille2; + new npc_mage_bataille3; + new npc_mage_bataille4; + new npc_mage_bataille5; + new npc_nain_bataille; + new npc_nain_bataille1; + new npc_nain_bataille2; + new npc_nain_bataille3; + new npc_nain_bataille4; + new npc_nain_bataille5; +} diff --git a/src/server/scripts/World/attaquecapitalA2.h b/src/server/scripts/World/attaquecapitalA2.h new file mode 100644 index 0000000..9baa23d --- /dev/null +++ b/src/server/scripts/World/attaquecapitalA2.h @@ -0,0 +1,532 @@ + +#define SPEED_WALK (0.5f) +#define SPEED_RUN (1.0f) +#define SPEED_MOUNT (1.6f) +#define MOUNT_MODEL 28918 +#define MOUNT_MODEL2 21974 + +// Texte Archer Défias +#define SAY_ARCHERDEFIAS_AGGRO "La Confrérie Vaincra!" +#define SAY_ARCHERDEFIAS_SLAY "Nul ne pourra s'opposer!" +#define SAY_ARCHERDEFIAS_DEATH "Vous ne pourrez pas tenir..." +#define SAY_ARCHERDEFIAS_ICE "Et comme ceci , ce n'est pas mieux?" + +// texte Mage Défias +#define SAY_MAGEDEFIAS_AGGRO "Vous ne ferez pas le poids contre nous les Défias!" +#define SAY_MAGEDEFIAS_SLAY "Vos futiles tentatives resterons Vaines!" +#define SAY_MAGEDEFIAS_DEATH "Notre Maitre aura raison de vous..." +#define SAY_MAGEDEFIAS_SOUL "Que les ténèbres vous recouvre!" + +// Texte Infanterie defias +#define SAY_INFANTERIEDEFIAS_AGGRO "Mes Frère Défias, Chargés!" +#define SAY_INFANTERIEDEFIAS_SLAY "Encore un traitre qui trépasse!" +#define SAY_INFANTERIEDEFIAS_DEATH "Gloire... et honneur.... pour les Défias....." + +// Texte Général Défias +#define SAY_LYCANTHROPE_AGGRO "Comment osez-vous défier la Confrérie des Défias!" +#define SAY_LYCANTHROPE_SLAY "Lycan Venez a moi!!!!" +#define SAY_LYCANTHROPE_DEATH "Noooooonnnn, Comment es-ce pos...sssi..bllee..." +#define SAY_LYCANTHROPE_MORPH "Esprit du Lycan investie MOI!" +#define SAY_LYCANTHROPE_DEMORPH "Esprit du Lycan pourquoi abandonnes-tu ton Serviteur...." +#define SAY_TRASHLYCAN_SPAWN "Serviteur Viens à mon Aide!!" +#define EMOTE_WORGEN_BITE "Général Défias commence à lancer Tourbillon!" + +// Texte Minion Général +#define SAY_TRASHLYCAN_AGGRO "Qui Ose s'en prendre au Maitre!" +#define SAY_TRASHLYCAN_SLAY "Vous ne pouvez me vaincre!!!" +#define SAY_TRASHLYCAN_DEATH "Maitre j'ai échoué..." +#define SAY_TRASHLYCAN_ICE "Cela Vous convient-il?" +#define EMOTE_TRASHLYCAN_VORTEX "Serviteur Défias lance des Tornades dévastatrices Courez !!!" + +// Texte Misc/Cosmétique +#define SPELL_ENERGY_STORM 43983 // enemy area aura, trigger 42577 +#define SPELL_ZAP_INFORM 42577 +#define SPELL_ZAP_DAMAGE 43137 // 1250 damage +#define SPELL_SUMMON_CYCLONE 43112 // Spawn vortex +#define SPELL_CYCLONE_VISUAL 43119 // trigger 43147 visual +#define SPELL_CYCLONE_PASSIVE 43120 // trigger 43121 4 aoe toutes les secondes + +// texte Mage Gobelin +#define SAY_MAGEGOBELIN_AGGRO "Venez affonter la Furie des éléments!" +#define SAY_MAGEGOBELIN_SLAY "Mettez un terme à votre agonie!" +#define SAY_MAGEGOBELIN_DEATH "La magie des gobelins... est la plus puissante..." +#define SAY_MAGEGOBELIN_BLOOD "Périssez dans la Souffrance!" + +// texte infanterie Gobelin +#define SAY_INFANTERIEGOBELIN_AGGRO "Frêre Gobelin Chargééééééééé!!!!!!!" +#define SAY_INFANTERIEGOBELIN_SLAY "Vous trépasserez tous sous mes coups!" +#define SAY_INFANTERIEGOBELIN_DEATH "N...o..n.... impo....ssible... Argh..." + +// texte ingénieur Gobelin +#define SAY_INGENIEURGOBELIN_AGGRO "Ma puissance n'a d'égale que mon intelligence !" +#define SAY_INGENIEURGOBELIN_SLAY "Les Gobelins règneront!!!!" +#define SAY_INGENIEURGOBELIN_DEATH "Maitre.... nous avons.... échoué...." +// texte Boss Gobelin +#define SAY_BOMBERMAN_AGGRO "Ca fesait longtemps que je n'avais pas mit le feu aux poudres !" +#define SAY_BOMBERMAN_DEATH "Je... reviendrais..." +#define SAY_BOMBERMAN_BERSERK "Votre fin est... IMMINENTE !" +#define SAY_KILL_ONE "Hasta la vista, baby" +#define SAY_KILL_TWO "Tes rêves viennent de partir en fumée !" +#define SAY_KILL_THREE "Redeviens poussière !" +#define SAY_TOWER_SPAWN "Voilà qui devrait vous rafraîchir les idées !" +#define SAY_LIVING_BOMB "Goûtez aux flammes de l'Enfer !" + +// texte Premier add Boss Gobelin: Tower +#define SAY_TOWER_DEATH "B...oum..." + +// texte Deuxième add Boss Gobelin : Tower +#define SAY_ALARM_DEATH "B...oum..." +#define SAY_ALARM_ALERT "Alerte ! Ennemis détéctés !" + +// texte Troisième add Boss Gobelin : Tower +#define SAY_BOMB_DEATH "Ca va péter !" + + + +// Gestion des Phases +enum Phases +{ + PHASE_NEUTRE = 0, + PHASE_INTRO, + PHASE_ONE, + PHASE_TWO +}; + +// Trash Mobs et boss spawn dans les waves +enum eCreature +{ + INFANTERIE_DEFIAS = 100020, + MAGE_DEFIAS = 100021, + ARCHER_DEFIAS = 100022, + LYCAN = 100010, + ROI = 100024, + JAINA = 100025, + GENERAL = 100019, + MAGE_GOBELIN = 100027, + INFANTERIE_GOBELIN = 100028, + INGENIEUR_GOBELIN = 100030, + BOMBERMAN = 100012 +}; + +enum EncounterData +{ + ENCOUNTER_WAVES_NUMBER = 9, + ENCOUNTER_WAVES_MAX_SPAWNS = 10 +}; + +enum WorldStatesCoT +{ + WORLDSTATE_WAVE_COUNT = 3504 +}; + + +/*##################################################### +# Trash Vagues Hurlevent HurleventBaseWaves ARCHER_DEFIAS +######################################################*/ + +enum spellarcher +{ + MULTISHOT = 40872, + VOLLEY = 38633, + SUMMONED_SNAKE = 29444, + BOLT_VOLLEY = 34780, + BEWITCHING_AURA = 29486, + REJUVENATION = 71142, + ICE_TRAP = 71249, + AURA_ROT = 25818 +}; + + +/*##################################################### +# Trash Vagues Hurlevent HurleventBaseWaves MAGE_DEFIAS +######################################################*/ + +enum Spellmage +{ + STORM_OF_GRIEF = 55847, + SHADOW_BURST = 34436, + PIERCING_SHADOW = 36698, + SHADOW_FLAME = 22539, + HARVEST_SOUL = 28679, + SHADOW_BOLT = 41957 +}; + +/*##################################################### +# Trash Vagues Hurlevent HurleventBaseWaves INFANTERIE_DEFIAS +######################################################*/ + +enum spellinfanterie +{ + ENRAGER = 48138, + FRENZI = 48142, + MORTALE_WOUND = 59265, + DECREPIT = 54098, + WORGEN_BIT = 55266 +}; + + +/*##################################################### +# Boss Général Défias Porte Hurlevent +######################################################*/ + +enum lycanthropeSpells +{ + ENRAGE = 48138, + FRENZY = 48142, + MORTAL_WOUN = 59265, + WORGEN_BITE = 55266, + WORGEN_CALL = 53095, + DECREPIT_FEVER = 54098, + SUMMON_WORGEN = 27020, + SUMMON_TRASHLYCAN = 100004 +}; + +/*##################################################### +# Minion du Général Défias +######################################################*/ + +enum TrashlycanSpells +{ + SPELL_MULTISHOT = 40872, + SPELL_VOLLEY = 38633, + SUMMONED_VORTEX = 100017, + SPELL_BOLT_VOLLEY = 34780, + SPELL_BEWITCHING_AURA = 29486, + SPELL_REJUVENATION = 71142, + SPELL_ICE_TRAP = 71249, + SPELL_AURA_ROT = 25818 +}; + +/*##################################################### +# Trash Vagues Hurlevent PortBaseWaves MAGE_GOBELIN +######################################################*/ + +enum MagegobelinSpells +{ + HEALING_WAVE = 51586, + LIGHTNING_BOLT = 59024, + BLOODLUST = 41185, + LIGHTNING_SHIELD = 59025, + SUMMON_AIR_ELEMENTAL = 30418, + LAVA_BURST = 59519, + CHAIN_LIGHTNING = 54531, + FLAME_SHOCK = 43303, + EARTH_SHOCK = 43305, + LIGHTNING_RING = 59848 +}; + +/*########################################################### +# Trash Vagues Hurlevent PortBaseWaves INFANTERIE_GOBELIN +############################################################*/ + +enum InfanteriegobelinSpells +{ + RAGE = 48138, + TOURBILLON = 55266, + FRENZ = 48142, + CHAINCRISTAL = 47698, + HURLEMENT = 16838 +}; + +/*########################################################### +# Trash Vagues Hurlevent PortBaseWaves INGENIEUR_GOBELIN +############################################################*/ + +enum IngenieurgobelinSpells +{ + SUMMON_STOLEN_SOUL = 100029, + STOLEN_SOUL = 32346, + STOLEN_SOUL_VISUAL = 32395, + MOONFIRE = 37328, + FIREBALL = 37329, + MIND_FLAY = 37330, + HEMORRHAGE = 37331, + FROSTSHOCK = 37332, + CURSE_OF_AGONY = 37334, + MORTAL_STRIKE = 37335, + FREEZING_TRAP = 37368, + HAMMER_OF_JUSTICE = 37369, + EXPLOSION = 44314, + CRI = 19134, + BOMBES = 46184, + ROCKET = 46187 +}; + +/*########################################################### +/* Boss Gobelin Port de Hurlevent +############################################################*/ + +enum bombermanSpells +{ + BERSERK = 26662, /* Berserk au bout de 10min */ + MORTA_WOUND = 54378, /* Blessure mortelle sur tank, force à switch */ + LIVING_BOMB = 20475, /* Bombe vivante aléatoire toutes les x min */ + SLOW_FALL = 130, /* Chute lente en même temps que Bombe vivante */ + ELECTRIFIED_NET = 35107, /* Sarment toutes les x min */ + SAW_BLADE = 31486, /* Dégât au cac */ + SUPER_SHRINK_RAY = 31485, /* Réduit dégâts ennemis */ + SUMMON_TOWER = 100013, + SUMMON_ALARM = 100014 + + +}; + +/*########################################################### +/* Premier add : Tower +############################################################*/ + +enum AddBombermanTowerSpells +{ + ICE_NOVA = 64919, /* Réduit vitesse, augmente dégât givre */ + WATER_SPRAY = 29923, /* Gros dégâts de givre */ + DEFENSE_MATRIX_TOWER = 65070, /* Bouclier à 20%*/ + EXPLOSION_TOWER = 25699 /* Explose à la mort */ +}; + +/*########################################################### +/* Deuxième add : Tower +############################################################*/ + +enum AddBombermanAlarmSpells +{ + DEFENSE_MATRIX_ALARM = 65070, /* Bouclier à 20%*/ + EXPLOSION_ALARM = 25699, /* Explose à la mort */ + SUMMON_BOMB = 100015 /* Invoque porteur de bombes */ +}; + +/*########################################################### +/* Troisième add : Tower +############################################################*/ + +enum AddAlarmBombSpells +{ + LIVING_BOMB_MINE = 20475, /* Bombe vivante sur lui pour s'auto-détruire */ + EXPLOSION_BOMB = 25699, /* Explose à la mort */ + SUMMON_MINE = 100016 /* Invoque mine */ +}; + +// spawn des Wave 1-8 +float HurleventBaseWaves[ENCOUNTER_WAVES_NUMBER][ENCOUNTER_WAVES_MAX_SPAWNS][5]= // gestion du spawn des trash Entrée Hurlevent +{ + { + {ARCHER_DEFIAS, -9180.14f, 341.82f, 83.88f, 0.80f }, + {MAGE_DEFIAS, -9178.20f, 339.93f, 83.80f, 0.80f }, + {INFANTERIE_DEFIAS, -9175.77f, 338.08f, 83.67f, 0.80f }, + {MAGE_DEFIAS, -9173.75f, 336.27f, 83.68f, 0.80f }, + {ARCHER_DEFIAS, -9171.99f, 334.69f, 83.67f, 0.80f }, + {ARCHER_DEFIAS, -9183.23f, 336.67f, 82.73f, 0.80f }, + {MAGE_DEFIAS, -9181.29f, 334.90f, 82.61f, 0.80f }, + {INFANTERIE_DEFIAS, -9179.31f, 333.12f, 82.39f, 0.80f }, + {MAGE_DEFIAS, -9177.43f, 331.74f, 82.30f, 0.80f }, + {ARCHER_DEFIAS, -9174.75f, 329.75f, 82.17f, 0.80f } + }, + { + {ARCHER_DEFIAS, -9180.14f, 341.82f, 83.88f, 0.80f }, + {MAGE_DEFIAS, -9178.20f, 339.93f, 83.80f, 0.80f }, + {INFANTERIE_DEFIAS, -9175.77f, 338.08f, 83.67f, 0.80f }, + {MAGE_DEFIAS, -9173.75f, 336.27f, 83.68f, 0.80f }, + {ARCHER_DEFIAS, -9171.99f, 334.69f, 83.67f, 0.80f }, + {ARCHER_DEFIAS, -9183.23f, 336.67f, 82.73f, 0.80f }, + {MAGE_DEFIAS, -9181.29f, 334.90f, 82.61f, 0.80f }, + {INFANTERIE_DEFIAS, -9179.31f, 333.12f, 82.39f, 0.80f }, + {MAGE_DEFIAS, -9177.43f, 331.74f, 82.30f, 0.80f }, + {ARCHER_DEFIAS, -9174.75f, 329.75f, 82.17f, 0.80f } + }, + { + {ARCHER_DEFIAS, -9180.14f, 341.82f, 83.88f, 0.80f }, + {MAGE_DEFIAS, -9178.20f, 339.93f, 83.80f, 0.80f }, + {INFANTERIE_DEFIAS, -9175.77f, 338.08f, 83.67f, 0.80f }, + {MAGE_DEFIAS, -9173.75f, 336.27f, 83.68f, 0.80f }, + {ARCHER_DEFIAS, -9171.99f, 334.69f, 83.67f, 0.80f }, + {ARCHER_DEFIAS, -9183.23f, 336.67f, 82.73f, 0.80f }, + {MAGE_DEFIAS, -9181.29f, 334.90f, 82.61f, 0.80f }, + {INFANTERIE_DEFIAS, -9179.31f, 333.12f, 82.39f, 0.80f }, + {MAGE_DEFIAS, -9177.43f, 331.74f, 82.30f, 0.80f }, + {ARCHER_DEFIAS, -9174.75f, 329.75f, 82.17f, 0.80f } + }, + { + {ARCHER_DEFIAS, -9180.14f, 341.82f, 83.88f, 0.80f }, + {MAGE_DEFIAS, -9178.20f, 339.93f, 83.80f, 0.80f }, + {INFANTERIE_DEFIAS, -9175.77f, 338.08f, 83.67f, 0.80f }, + {MAGE_DEFIAS, -9173.75f, 336.27f, 83.68f, 0.80f }, + {ARCHER_DEFIAS, -9171.99f, 334.69f, 83.67f, 0.80f }, + {ARCHER_DEFIAS, -9183.23f, 336.67f, 82.73f, 0.80f }, + {MAGE_DEFIAS, -9181.29f, 334.90f, 82.61f, 0.80f }, + {INFANTERIE_DEFIAS, -9179.31f, 333.12f, 82.39f, 0.80f }, + {MAGE_DEFIAS, -9177.43f, 331.74f, 82.30f, 0.80f }, + {ARCHER_DEFIAS, -9174.75f, 329.75f, 82.17f, 0.80f } + }, + { + {ARCHER_DEFIAS, -9180.14f, 341.82f, 83.88f, 0.80f }, + {MAGE_DEFIAS, -9178.20f, 339.93f, 83.80f, 0.80f }, + {INFANTERIE_DEFIAS, -9175.77f, 338.08f, 83.67f, 0.80f }, + {MAGE_DEFIAS, -9173.75f, 336.27f, 83.68f, 0.80f }, + {ARCHER_DEFIAS, -9171.99f, 334.69f, 83.67f, 0.80f }, + {ARCHER_DEFIAS, -9183.23f, 336.67f, 82.73f, 0.80f }, + {MAGE_DEFIAS, -9181.29f, 334.90f, 82.61f, 0.80f }, + {INFANTERIE_DEFIAS, -9179.31f, 333.12f, 82.39f, 0.80f }, + {MAGE_DEFIAS, -9177.43f, 331.74f, 82.30f, 0.80f }, + {ARCHER_DEFIAS, -9174.75f, 329.75f, 82.17f, 0.80f } + }, + { + {ARCHER_DEFIAS, -9180.14f, 341.82f, 83.88f, 0.80f }, + {MAGE_DEFIAS, -9178.20f, 339.93f, 83.80f, 0.80f }, + {INFANTERIE_DEFIAS, -9175.77f, 338.08f, 83.67f, 0.80f }, + {MAGE_DEFIAS, -9173.75f, 336.27f, 83.68f, 0.80f }, + {ARCHER_DEFIAS, -9171.99f, 334.69f, 83.67f, 0.80f }, + {ARCHER_DEFIAS, -9183.23f, 336.67f, 82.73f, 0.80f }, + {MAGE_DEFIAS, -9181.29f, 334.90f, 82.61f, 0.80f }, + {INFANTERIE_DEFIAS, -9179.31f, 333.12f, 82.39f, 0.80f }, + {MAGE_DEFIAS, -9177.43f, 331.74f, 82.30f, 0.80f }, + {ARCHER_DEFIAS, -9174.75f, 329.75f, 82.17f, 0.80f } + }, + { + {ARCHER_DEFIAS, -9180.14f, 341.82f, 83.88f, 0.80f }, + {MAGE_DEFIAS, -9178.20f, 339.93f, 83.80f, 0.80f }, + {INFANTERIE_DEFIAS, -9175.77f, 338.08f, 83.67f, 0.80f }, + {MAGE_DEFIAS, -9173.75f, 336.27f, 83.68f, 0.80f }, + {ARCHER_DEFIAS, -9171.99f, 334.69f, 83.67f, 0.80f }, + {ARCHER_DEFIAS, -9183.23f, 336.67f, 82.73f, 0.80f }, + {MAGE_DEFIAS, -9181.29f, 334.90f, 82.61f, 0.80f }, + {INFANTERIE_DEFIAS, -9179.31f, 333.12f, 82.39f, 0.80f }, + {MAGE_DEFIAS, -9177.43f, 331.74f, 82.30f, 0.80f }, + {ARCHER_DEFIAS, -9174.75f, 329.75f, 82.17f, 0.80f } + }, + { + {ARCHER_DEFIAS, -9180.14f, 341.82f, 83.88f, 0.80f }, + {MAGE_DEFIAS, -9178.20f, 339.93f, 83.80f, 0.80f }, + {INFANTERIE_DEFIAS, -9175.77f, 338.08f, 83.67f, 0.80f }, + {MAGE_DEFIAS, -9173.75f, 336.27f, 83.68f, 0.80f }, + {ARCHER_DEFIAS, -9171.99f, 334.69f, 83.67f, 0.80f }, + {ARCHER_DEFIAS, -9183.23f, 336.67f, 82.73f, 0.80f }, + {MAGE_DEFIAS, -9181.29f, 334.90f, 82.61f, 0.80f }, + {INFANTERIE_DEFIAS, -9179.31f, 333.12f, 82.39f, 0.80f }, + {MAGE_DEFIAS, -9177.43f, 331.74f, 82.30f, 0.80f }, + {ARCHER_DEFIAS, -9174.75f, 329.75f, 82.17f, 0.80f } + }, + { + {LYCAN, -9175.77f, 338.08f, 83.67f, 0.80f }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 } + } +}; + +float PortBaseWaves[ENCOUNTER_WAVES_NUMBER][ENCOUNTER_WAVES_MAX_SPAWNS][5]= // gestion du spawn des trash Port de Hurlevent +{ + { + {INGENIEUR_GOBELIN, -8284.62f, 1318.90f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.61f, 1319.03f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.70f, 1319.14f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.55f, 1318.63f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.61f, 1318.66f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8284.03f, 1322.24f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.56f, 1322.28f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.91f, 1322.56f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.63f, 1322.27f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.66f, 1322.28f, 5.23f, 4.68f } + }, + { + {INGENIEUR_GOBELIN, -8284.62f, 1318.90f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.61f, 1319.03f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.70f, 1319.14f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.55f, 1318.63f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.61f, 1318.66f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8284.03f, 1322.24f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.56f, 1322.28f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.91f, 1322.56f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.63f, 1322.27f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.66f, 1322.28f, 5.23f, 4.68f } + }, + { + {INGENIEUR_GOBELIN, -8284.62f, 1318.90f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.61f, 1319.03f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.70f, 1319.14f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.55f, 1318.63f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.61f, 1318.66f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8284.03f, 1322.24f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.56f, 1322.28f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.91f, 1322.56f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.63f, 1322.27f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.66f, 1322.28f, 5.23f, 4.68f } + }, + { + {INGENIEUR_GOBELIN, -8284.62f, 1318.90f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.61f, 1319.03f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.70f, 1319.14f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.55f, 1318.63f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.61f, 1318.66f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8284.03f, 1322.24f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.56f, 1322.28f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.91f, 1322.56f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.63f, 1322.27f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.66f, 1322.28f, 5.23f, 4.68f } + }, + { + {INGENIEUR_GOBELIN, -8284.62f, 1318.90f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.61f, 1319.03f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.70f, 1319.14f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.55f, 1318.63f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.61f, 1318.66f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8284.03f, 1322.24f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.56f, 1322.28f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.91f, 1322.56f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.63f, 1322.27f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.66f, 1322.28f, 5.23f, 4.68f } + }, + { + {INGENIEUR_GOBELIN, -8284.62f, 1318.90f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.61f, 1319.03f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.70f, 1319.14f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.55f, 1318.63f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.61f, 1318.66f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8284.03f, 1322.24f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.56f, 1322.28f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.91f, 1322.56f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.63f, 1322.27f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.66f, 1322.28f, 5.23f, 4.68f } + }, + { + {INGENIEUR_GOBELIN, -8284.62f, 1318.90f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.61f, 1319.03f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.70f, 1319.14f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.55f, 1318.63f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.61f, 1318.66f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8284.03f, 1322.24f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.56f, 1322.28f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.91f, 1322.56f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.63f, 1322.27f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.66f, 1322.28f, 5.23f, 4.68f } + }, + { + {INGENIEUR_GOBELIN, -8284.62f, 1318.90f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.61f, 1319.03f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.70f, 1319.14f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.55f, 1318.63f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.61f, 1318.66f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8284.03f, 1322.24f, 5.23f, 4.68f }, + {MAGE_GOBELIN, -8287.56f, 1322.28f, 5.23f, 4.68f }, + {INFANTERIE_GOBELIN, -8290.91f, 1322.56f, 5.55f, 4.68f }, + {MAGE_GOBELIN, -8293.63f, 1322.27f, 5.23f, 4.68f }, + {INGENIEUR_GOBELIN, -8296.66f, 1322.28f, 5.23f, 4.68f } + }, + { + {BOMBERMAN, -8290.70f, 1319.14f, 5.55f, 4.68f }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 } + } + +}; diff --git a/src/server/scripts/World/attaquecapitalH2.cpp b/src/server/scripts/World/attaquecapitalH2.cpp new file mode 100644 index 0000000..3750f54 --- /dev/null +++ b/src/server/scripts/World/attaquecapitalH2.cpp @@ -0,0 +1,4878 @@ + +/******************************************************* + Event de Orgrimmar Attaque capital + *******************************************************/ + +#include "ScriptPCH.h" +#include "ScriptedEscortAI.h" +#include "GameEventMgr.h" +#include "attaquecapitalH2.h" + + +//Roi Thrall de Orgrimmar +class npcthrall : public CreatureScript +{ + public: + npcthrall() : CreatureScript("npcthrall") {} + + struct npcthrallAI : public npc_escortAI + { + uint32 Phase; + uint32 uiPhaseTimer, uiStep; + bool bStepping; + char msg[255]; + bool debug; + + npcthrallAI(Creature* creature) : npc_escortAI(creature),summons(me) + { + me->SetReactState(REACT_AGGRESSIVE); + //me->SetReactState(REACT_PASSIVE); + me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + Reset(); + } + + SummonList summons; + + + void Reset() + { + Phase = PHASE_NEUTRE; + bStepping = false; + uiStep = 0; + uiPhaseTimer = 1000; + debug = true; + } + + void SummonedCreatureDespawn(Creature* summon) + { + summons.Despawn(summon); + } + + void JustSummoned(Creature* summon) + { + summons.Summon(summon); + } + + void JustDied(Unit* /*killer*/) + { + summons.DespawnAll(); + sGameEventMgr->StartEvent(93); + sWorld->ForceGameEventUpdate(); + } + + void JumpToNextStep(uint32 uiTimer) + { + uiPhaseTimer = uiTimer; + ++uiStep; + + if(debug) + { + //sprintf(msg, " UiStep : %u", uiStep); + sLog->outString("DEBUG: npcthralluistep est a %u", uiStep); + } + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 2: + SetEscortPaused(true); + me->HandleEmoteCommand(378); + //me->HandleEmoteCommand(412); + me->MonsterSay("Frêre de la Horde, Merci d'avoir répondu à mon appel. L'aube d'Argent et la Garde Foudrepique ont décidés de s'allier afin de raser notre Forteresse.", LANG_UNIVERSAL, 0); + uiStep=0; + JumpToNextStep(8000); + break; + case 5: + me->HandleEmoteCommand(378); + me->MonsterSay("Il vous faudra pour repousser ces deux attaques frontales! Séparer vos forces en deux Groupes.\nUn qui ira consolider les Portes de notre Forteresse, et l'autre qui iront unir leurs forces pour repousser les assaults de l'entrée Ouest!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + SetEscortPaused(true); + uiStep=0; + JumpToNextStep(7000); + break; + case 7: + me->HandleEmoteCommand(378); + me->MonsterSay("Le groupe qui se portera volontaire pour défendre l'entrée de notre forteresse seront sous les ordres du Général Goderik.", LANG_UNIVERSAL, 0); + me->SummonCreature(100046, 1925.598022f, -4207.887695f, 42.321892f, 1.647730f); + me->HandleEmoteCommand(378); + SetEscortPaused(true); + uiStep=0; + JumpToNextStep(7000); + break; + case 10: + me->HandleEmoteCommand(378); + me->MonsterSay("Le groupe qui se portera volontaire pour défendre entrée Ouest seront sous les ordres du Général Vol'jin.", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + me->PlayDirectSound(3900);// Music intro + SetEscortPaused(true); + JumpToNextStep(26000); + break; + + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1919.93f, -4125.46f, 43.4266f); + AddWaypoint(2, 1920.30f, -4130.21f, 43.1400f); + AddWaypoint(3, 1920.87f, -4137.43f, 40.5499f); + AddWaypoint(4, 1914.98f, -4142.03f, 40.6245f); + AddWaypoint(5, 1915.58f, -4142.40f, 40.6245f); + AddWaypoint(6, 1929.12f, -4142.12f, 40.6289f); + AddWaypoint(7, 1927.31f, -4142.90f, 40.6236f); + AddWaypoint(8, 1920.77f, -4136.42f, 40.5337f); + AddWaypoint(9, 1920.21f, -4128.98f, 43.1401f); + AddWaypoint(10, 1920.29f, -4130.32f, 43.1402f); + break; + default: + sLog->outError("Unexpected movement variation (%i) in npcthrallAI::SetupMovement call!", variation); + return; + } + if (npcthrallAI* pEscortAI = CAST_AI(npcthrallAI, me->AI())) + { + if (variation > 0) + pEscortAI->Start(true, true, NULL, NULL, false, true); + else + { + pEscortAI->Start(true, true); + pEscortAI->SetDespawnAtEnd(false); + } + pEscortAI->SetDespawnAtFar(false); + me->setActive(true); + } + } + + + void UpdateAI(const uint32 diff) + { + npc_escortAI::UpdateAI(diff); + + if(bStepping) + { + if(uiPhaseTimer <= diff) + { + switch(uiStep) + { + case 0: + me->PlayDirectSound(3900);// Music intro + me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING); + JumpToNextStep(500); + break; + case 1: + SetEscortPaused(false); + break; + case 2: + me->HandleEmoteCommand(412); + me->MonsterSay("Les chiens! Le Général Vol'jin est en route à sont arrivé Héros nous formerons les rangs.", LANG_UNIVERSAL, 0); + me->SummonCreature(100047, 1925.598022f, -4207.887695f, 42.321892f, 1.647730f); + JumpToNextStep(5000); + break; + case 3: + me->HandleEmoteCommand(412); + me->MonsterSay("Général Goderik voici les Héros qui seront sous votre commandemant pour défendre les portes de notre Forteresse.", LANG_UNIVERSAL, 0); + JumpToNextStep(25000); + break; + case 4: + me->HandleEmoteCommand(412); + me->MonsterSay("Héros Former les Rangs! Les Trolls seront nos alliés sur le Champ de bataille, portez leur assistances si nécessaire!", LANG_UNIVERSAL, 0); + JumpToNextStep(10000); + break; + case 5: + me->HandleEmoteCommand(412); + me->MonsterSay("La défaite n'est pas envisageable Héros! Pour la Horde! Pour l'Honneur!", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 6: + me->HandleEmoteCommand(412); + me->MonsterSay("Triomphez de nos ennemis, et vous serez grandement récompensés! Orgrimmar ne doit pas Tomber! Lok'tar Ogar!", LANG_UNIVERSAL, 0); + me->SetReactState(REACT_DEFENSIVE); + JumpToNextStep(5000); + break; + + } + }else uiPhaseTimer -= diff; + } + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npcthrallAI(creature); + } + + bool OnGossipHello(Player* player, Creature* creature) + { + player->ADD_GOSSIP_ITEM( 9, "Nous avons entendu votre appel!", GOSSIP_SENDER_MAIN, 1); + player->ADD_GOSSIP_ITEM( 4, "Quitter", GOSSIP_SENDER_MAIN, 2); + player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); + return true; + } + + bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action ) + { + if(sender == GOSSIP_SENDER_MAIN) + { + SendDefaultMenu(player, creature, action ); + player->CLOSE_GOSSIP_MENU(); + } + return true; + } + + void SendDefaultMenu(Player* player, Creature *creature, uint32 action ) + { + npcthrallAI* NPCAI = CAST_AI(npcthrall::npcthrallAI, creature->AI()); + + switch(action) + { + case 1: + + player->CLOSE_GOSSIP_MENU(); + NPCAI->SetupMovement(0); + NPCAI->bStepping = true; + break; + case 2: + player->CLOSE_GOSSIP_MENU(); + break; + default: + player->CLOSE_GOSSIP_MENU(); + break; + } + } +}; + +//Général Goderik Orgrimmar + + +class npcgoderik : public CreatureScript +{ + public: + npcgoderik() : CreatureScript("npcgoderik") {} + + struct npcgoderikAI : public npc_escortAI + { + + uint32 Phase; + uint32 uiPhaseTimer, uiStep; + uint32 uiWave; + uint32 WavesCounter; + uint64 uiWaveGUID[ENCOUNTER_WAVES_MAX_SPAWNS]; + bool bStepping; + char msg[255]; + bool WaveDone; + bool debug; + + npcgoderikAI(Creature* creature) : npc_escortAI(creature),summons(me) + { + me->SetReactState(REACT_PASSIVE); + me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE); + me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + Reset(); + } + + SummonList summons; + + + void Reset() + { + Phase = PHASE_NEUTRE; + bStepping = false; + uiStep = 0; + uiPhaseTimer = 1000; + debug = true; + SetupMovement(0); + WavesCounter = 0; + uiWave = 0; + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) uiWaveGUID[i] = 0; + WaveDone = false; + } + + + void SummonedCreatureDespawn(Creature* summon) + { + summons.Despawn(summon); + } + + void JustSummoned(Creature* summon) + { + summons.Summon(summon); + } + + + void SpawnWaveGroup(uint32 waveID, uint64* guidVector) + { + for(uint32 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if((uint32)OrgrimmarBaseWaves[waveID][i][0] == 0) break; + + if(Creature* pTemp = me->SummonCreature((uint32)OrgrimmarBaseWaves[waveID][i][0], OrgrimmarBaseWaves[waveID][i][1], OrgrimmarBaseWaves[waveID][i][2], OrgrimmarBaseWaves[waveID][i][3], OrgrimmarBaseWaves[waveID][i][4], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000)) + { + guidVector[i] = pTemp->GetGUID(); + + } + } + SendCrierWarning(waveID); + } + + + void SendCrierWarning(uint8 waveNumber) + { + char* textId = ""; + + switch(waveNumber) + { + case 0: textId = "1er Assaut aux Portes de Orgrimmar en Approche !"; + me->SummonCreature(100059, 1426.0357f, -4383.5664f, 25.4622f, 1.65f); + me->SummonCreature(100060, 1428.7165f, -4385.6040f, 25.4629f, 1.65f); + me->SummonCreature(100061, 1430.0234f, -4382.8876f, 25.4629f, 1.65f); + me->SummonCreature(100062, 1431.8599f, -4377.2456f, 25.4629f, 1.65f); + me->SummonCreature(100063, 1434.3652f, -4379.2373f, 25.4629f, 1.65f); + me->SummonCreature(100064, 1436.4489f, -4376.9970f, 25.4629f, 1.65f); + break; + case 1: textId = "2ème Assaut aux Portes de Orgrimmar en Approche !"; + me->SummonCreature(100059, 1426.0357f, -4383.5664f, 25.4622f, 1.65f); + me->SummonCreature(100060, 1428.7165f, -4385.6040f, 25.4629f, 1.65f); + me->SummonCreature(100061, 1430.0234f, -4382.8876f, 25.4629f, 1.65f); + me->SummonCreature(100062, 1431.8599f, -4377.2456f, 25.4629f, 1.65f); + me->SummonCreature(100063, 1434.3652f, -4379.2373f, 25.4629f, 1.65f); + me->SummonCreature(100064, 1436.4489f, -4376.9970f, 25.4629f, 1.65f); + break; + case 2: textId = "3ème Assaut aux Portes de Orgrimmar en Approche !"; + me->SummonCreature(100059, 1426.0357f, -4383.5664f, 25.4622f, 1.65f); + me->SummonCreature(100060, 1428.7165f, -4385.6040f, 25.4629f, 1.65f); + me->SummonCreature(100061, 1430.0234f, -4382.8876f, 25.4629f, 1.65f); + me->SummonCreature(100062, 1431.8599f, -4377.2456f, 25.4629f, 1.65f); + me->SummonCreature(100063, 1434.3652f, -4379.2373f, 25.4629f, 1.65f); + me->SummonCreature(100064, 1436.4489f, -4376.9970f, 25.4629f, 1.65f); + break; + case 3: textId = "4ème Assaut aux Portes de Orgrimmar en Approche !"; + me->SummonCreature(100059, 1426.0357f, -4383.5664f, 25.4622f, 1.65f); + me->SummonCreature(100060, 1428.7165f, -4385.6040f, 25.4629f, 1.65f); + me->SummonCreature(100061, 1430.0234f, -4382.8876f, 25.4629f, 1.65f); + me->SummonCreature(100062, 1431.8599f, -4377.2456f, 25.4629f, 1.65f); + me->SummonCreature(100063, 1434.3652f, -4379.2373f, 25.4629f, 1.65f); + me->SummonCreature(100064, 1436.4489f, -4376.9970f, 25.4629f, 1.65f); + break; + case 4: textId = "5ème Assaut aux Portes de Orgrimmar en Approche !"; + me->SummonCreature(100059, 1426.0357f, -4383.5664f, 25.4622f, 1.65f); + me->SummonCreature(100060, 1428.7165f, -4385.6040f, 25.4629f, 1.65f); + me->SummonCreature(100061, 1430.0234f, -4382.8876f, 25.4629f, 1.65f); + me->SummonCreature(100062, 1431.8599f, -4377.2456f, 25.4629f, 1.65f); + me->SummonCreature(100063, 1434.3652f, -4379.2373f, 25.4629f, 1.65f); + me->SummonCreature(100064, 1436.4489f, -4376.9970f, 25.4629f, 1.65f); + break; + case 5: textId = "6ème Assaut aux Portes de Orgrimmar en Approche !"; + me->SummonCreature(100059, 1426.0357f, -4383.5664f, 25.4622f, 1.65f); + me->SummonCreature(100060, 1428.7165f, -4385.6040f, 25.4629f, 1.65f); + me->SummonCreature(100061, 1430.0234f, -4382.8876f, 25.4629f, 1.65f); + me->SummonCreature(100062, 1431.8599f, -4377.2456f, 25.4629f, 1.65f); + me->SummonCreature(100063, 1434.3652f, -4379.2373f, 25.4629f, 1.65f); + me->SummonCreature(100064, 1436.4489f, -4376.9970f, 25.4629f, 1.65f); + break; + case 6: textId = "7ème Assaut aux Portes de Orgrimmar en Approche !"; + me->SummonCreature(100059, 1426.0357f, -4383.5664f, 25.4622f, 1.65f); + me->SummonCreature(100060, 1428.7165f, -4385.6040f, 25.4629f, 1.65f); + me->SummonCreature(100061, 1430.0234f, -4382.8876f, 25.4629f, 1.65f); + me->SummonCreature(100062, 1431.8599f, -4377.2456f, 25.4629f, 1.65f); + me->SummonCreature(100063, 1434.3652f, -4379.2373f, 25.4629f, 1.65f); + me->SummonCreature(100064, 1436.4489f, -4376.9970f, 25.4629f, 1.65f); + break; + case 7: textId = "8ème Assaut aux Portes de Orgrimmar en Approche !"; + me->SummonCreature(100059, 1426.0357f, -4383.5664f, 25.4622f, 1.65f); + me->SummonCreature(100060, 1428.7165f, -4385.6040f, 25.4629f, 1.65f); + me->SummonCreature(100061, 1430.0234f, -4382.8876f, 25.4629f, 1.65f); + me->SummonCreature(100062, 1431.8599f, -4377.2456f, 25.4629f, 1.65f); + me->SummonCreature(100063, 1434.3652f, -4379.2373f, 25.4629f, 1.65f); + me->SummonCreature(100064, 1436.4489f, -4376.9970f, 25.4629f, 1.65f); + break; + case 8: textId = "Attention, Le général de L'aube d'Argent est en approche Préparez-vous !"; + me->SummonCreature(100059, 1426.0357f, -4383.5664f, 25.4622f, 1.65f); + me->SummonCreature(100060, 1428.7165f, -4385.6040f, 25.4629f, 1.65f); + me->SummonCreature(100061, 1430.0234f, -4382.8876f, 25.4629f, 1.65f); + me->SummonCreature(100062, 1431.8599f, -4377.2456f, 25.4629f, 1.65f); + me->SummonCreature(100063, 1434.3652f, -4379.2373f, 25.4629f, 1.65f); + me->SummonCreature(100064, 1436.4489f, -4376.9970f, 25.4629f, 1.65f); + + break; + } + + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, textId); + } + + + void JumpToNextStep(uint32 uiTimer) + { + uiPhaseTimer = uiTimer; + ++uiStep; + + if(debug) + { + //sprintf(msg, " UiStep : %u", uiStep); + sLog->outString("DEBUG: Goderikuistep est a %u", uiStep); + } + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 2: + SetEscortPaused(true); + uiStep=0; + JumpToNextStep(6000); + break; + case 3: + SetEscortPaused(true); + me->HandleEmoteCommand(66); + uiStep=0; + JumpToNextStep(8000); + break; + case 4: + SetEscortPaused(true); + me->MonsterYell("Mon Seigneur, nos éclaireurs nous signalent des mouvements massives de troupes de l'Aube d'Argent arrivant aux Portes de Orgrimmar! ", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + uiStep=0; + JumpToNextStep(5000); + break; + case 6: + SetEscortPaused(true); + me->MonsterYell("L'Aube d'Argent ont eut vent que nos Forces étaient dispersés dans tous le Royaume de Kalimdor et profitent de ce moment de faiblesse! ", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + uiStep=0; + JumpToNextStep(60000); + break; + case 8: + SetEscortPaused(true); + me->PlayDirectSound(11708); + me->MonsterYell("Que le Raid soutenant les Portes de la Forteresse me suive! ", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(12000); + break; + case 12: + SetEscortPaused(true); + me->MonsterSay("Tous en Montures mes frêres, et suivez moi!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(5000); + break; + case 36: + SetEscortPaused(true); + me->MonsterSay("Même si nous devons combattre jusqu'à notre derniers souffle, ils ne doivent pas franchir nos portes!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(3000); + break; + + + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1923.52f, -4176.77f, 41.1298f); + AddWaypoint(2, 1920.96f, -4144.89f, 40.6291f); + AddWaypoint(3, 1920.8f, -4137.24f, 40.5463f); + AddWaypoint(4, 1920.36f, -4133.18f, 42.0747f); + AddWaypoint(5, 1917.41f, -4132.52f, 42.5904f); + AddWaypoint(6, 1918.2f, -4132.00f, 42.9418f); + AddWaypoint(7, 1916.47f, -4128.43f, 43.1914f); + AddWaypoint(8, 1917.77f, -4132.38f, 42.6024f); + AddWaypoint(9, 1923.62f, -4178.9f, 41.1494f); + AddWaypoint(10, 1924.29f, -4187.27f, 42.1695f); + AddWaypoint(11, 1928.21f, -4248.2f, 41.501f); + AddWaypoint(12, 1932.73f, -4277.89f, 30.2976f); + AddWaypoint(13, 1937.23f, -4379.42f, 20.7319f); + AddWaypoint(14, 1943.95f, -4416.88f, 23.0321f); + AddWaypoint(15, 1935.8f, -4452.15f, 23.4811f); + AddWaypoint(16, 1913.64f, -4480.76f, 22.1305f); + AddWaypoint(17, 1890.07f, -4480.92f, 20.0355f); + AddWaypoint(18, 1877.64f, -4479.76f, 19.1636f); + AddWaypoint(19, 1859.41f, -4488.97f, 20.2728f); + AddWaypoint(20, 1826.46f, -4520.06f, 21.2107f); + AddWaypoint(21, 1772.35f, -4528.45f, 24.8683f); + AddWaypoint(22, 1734.77f, -4495.89f, 28.8264f); + AddWaypoint(23, 1730.63f, -4468.52f, 34.2398f); + AddWaypoint(24, 1742.2f, -4441.72f, 37.6663f); + AddWaypoint(25, 1738.8f, -4421.34f, 36.3932f); + AddWaypoint(26, 1721.77f, -4391.26f, 32.7598f); + AddWaypoint(27, 1707.21f, -4372.27f, 26.665f); + AddWaypoint(28, 1688.07f, -4383.71f, 24.2503f); + AddWaypoint(29, 1656.84f, -4410.43f, 17.3051f); + AddWaypoint(30, 1600.68f, -4438.82f, 6.5072f); + AddWaypoint(31, 1511.97f, -4414.5f, 18.8587f); + AddWaypoint(32, 1440.41f, -4421.62f, 25.4632f); + AddWaypoint(33, 1430.87f, -4366.99f, 25.4632f); + AddWaypoint(34, 1376.85f, -4371.16f, 26.0247f); + AddWaypoint(35, 1363.56f, -4397.79f, 29.2606f); + AddWaypoint(36, 1363.02f, -4393.03f, 29.3431f); + break; + default: + sLog->outError("Unexpected movement variation (%i) in npcgoderikAI::SetupMovement call!", variation); + return; + } + if(npcgoderikAI* pEscortAI = CAST_AI(npcgoderikAI, me->AI())) + { + pEscortAI->Start(false, true); + pEscortAI->SetDespawnAtEnd(false); + pEscortAI->SetDespawnAtFar(false); + me->setActive(true); + bStepping = true; + } + } + + + void UpdateAI(const uint32 diff) + { + npc_escortAI::UpdateAI(diff); + + if(sGameEventMgr->IsActiveEvent(92)) + { + if(bStepping) + { + if(uiPhaseTimer <= diff) + { + switch(uiStep) + { + case 0: + SetRun(true); + JumpToNextStep(2000); + break; + case 1: + SetEscortPaused(false); + break; + case 2: //go au Waypoint 12 + SetEscortPaused(false); + break; + case 3: + me->Mount(MOUNT_MODEL); + me->SetSpeed(MOVE_RUN, SPEED_MOUNT); + JumpToNextStep(5000); + break; + case 4: + me->MonsterSay("En avant Héros.", LANG_UNIVERSAL, 0); + JumpToNextStep(10000); + case 5: + SetEscortPaused(false); + break; + case 6: + me->Unmount(); + me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetReactState(REACT_PASSIVE); + JumpToNextStep(5000); + break; + case 7: + me->SummonCreature(100048, 1387.3317f, -4373.9150f, 27.2426f, 3.2704f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000); + me->SummonCreature(100048, 1385.8017f, -4363.7065f, 27.2426f, 3.3411f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000); + me->MonsterSay("Voici deux cannon encore en état de marchent pour vous aider dans votre Combat", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 8: + me->MonsterSay("Placez-y vos deux meilleurs Artilleurs Héros. Ils vous seront d'un grands soutiens!", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 9: + me->MonsterYell("Que Dieu vous protèges Frères de la Horde, Lok'tar Ogar!", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + me->PlayDirectSound(11803); + + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + break; + case 10: + if(!WaveDone) + { + uint32 mobCounter = 0 , deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 11: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Premier Assaut Stoppé aux Portes de Orgrimmar! "); + me->MonsterTextEmote("Premier Assaut Stoppé aux Portes de Orgrimmar!", 0, true); + JumpToNextStep(4000); + break; + case 12: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 13: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 14: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Deuxième Assaut Stoppé aux Portes de Orgrimmar! "); + me->MonsterTextEmote("Deuxième Assaut Stoppé aux Portes de Orgrimmar!", 0, true); + JumpToNextStep(4000); + break; + case 15: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Courage Héros, il faut tenir bon!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 16: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 17: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Troisième Assaut Stoppé aux Portes de Orgrimmar! "); + me->MonsterTextEmote("Troisième Assaut Stoppé aux Portes de Orgrimmar!", 0, true); + JumpToNextStep(4000); + break; + case 18: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 19: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 20: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Quatrième Assaut Stoppé aux Portes de Orgrimmar! "); + me->MonsterTextEmote("Quatrième Assaut Stoppé aux Portes de Orgrimmar!", 0, true); + JumpToNextStep(4000); + break; + case 21: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("L'Aube d'Argent ne doivent pas franchir nos Portes!!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 22: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 23: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Cinquième Assaut Stoppé aux Portes de Orgrimmar! "); + me->MonsterTextEmote("Cinquième Assaut Stoppé aux Portes de Orgrimmar!", 0, true); + JumpToNextStep(4000); + break; + case 24: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 25: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 26: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Sixième Assaut Stoppé aux Portes de Orgrimmar! "); + me->MonsterTextEmote("Sixième Assaut Stoppé aux Portes de Orgrimmar!", 0, true); + JumpToNextStep(4000); + break; + case 27: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Ne faiblissez pas dans l'effort! Il faut sauver notre Roi à tout prix!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 28: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 29: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Septième Assaut Stoppé aux Portes de Orgrimmar! "); + me->MonsterTextEmote("Septième Assaut Stoppé aux Portes de Orgrimmar!", 0, true); + JumpToNextStep(4000); + break; + case 30: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 31: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 32: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Huitème Assaut Stoppé aux Portes de Orgrimmar! "); + me->MonsterTextEmote("Huitème Assaut Stoppé aux Portes de Orgrimmar!", 0, true); + JumpToNextStep(4000); + break; + case 33: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(5000); + me->PlayDirectSound(11803); + me->MonsterYell("Bravo Héros, vous venez de repousser les assauts de l'Aube d'Argent! Préparez-vous ! Leur Général arrive!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 34: + //me->MonsterTextEmote("Attention, Le général des Défias est en approche Préparez-vous !", 0, true); + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 35: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "La Horde a Défendu Vaillament Les Portes de Orgrimmar!"); + me->MonsterTextEmote("La Horde a Défendu Vaillament Les Portes de Orgrimmar!", 0, true); + JumpToNextStep(4000); + case 36: + JumpToNextStep(4000); + break; + case 37: + me->MonsterYell("Bravo Héros, vous venez de repousser les assauts de l'Aube d'Argent! Orgrimmar vous sera indéfiniment redevable!", LANG_UNIVERSAL, 0); + JumpToNextStep(4000); + break; + case 38: + break; + + + + } + }else uiPhaseTimer -= diff; + } + } + else + { + summons.DespawnAll(); //despawn ici + } + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npcgoderikAI(creature); + } +}; + + + +/*****************************/ +/* Général Vol'jin Orgrimmar */ +/*****************************/ + +class npcvoljin : public CreatureScript +{ + public: + npcvoljin() : CreatureScript("npcvoljin") {} + + struct npcvoljinAI : public npc_escortAI + { + + uint32 Phase; + uint32 uiPhaseTimer, uiStep; + uint32 uiWave; + uint32 WavesCounter; + uint32 variation; + uint64 uiWaveGUID[ENCOUNTER_WAVES_MAX_SPAWNS]; + bool bStepping; + char msg[255]; + bool debug; + bool WaveDone; + + + + npcvoljinAI(Creature* creature) : npc_escortAI(creature) + { + me->SetReactState(REACT_PASSIVE); + me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE); + me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + Reset(); + } + + void Reset() + { + Phase = PHASE_NEUTRE; + bStepping = false; + uiStep = 0; + uiPhaseTimer = 1000; + debug = true; + variation = 0; + SetupMovement(0); + WavesCounter = 0; + uiWave = 0; + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) uiWaveGUID[i] = 0; + WaveDone = false; + SetRun(true); + } + + void SpawnWaveGroup(uint32 waveID, uint64* guidVector) + { + for(uint32 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if((uint32)OuestBaseWaves[waveID][i][0] == 0) break; + + if(Creature* pTemp = me->SummonCreature((uint32)OuestBaseWaves[waveID][i][0], OuestBaseWaves[waveID][i][1], OuestBaseWaves[waveID][i][2], OuestBaseWaves[waveID][i][3], OuestBaseWaves[waveID][i][4], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000)) + { + guidVector[i] = pTemp->GetGUID(); + } + } + SendCrierWarning(waveID); + } + + + void SendCrierWarning(uint8 waveNumber) + { + char* textId = ""; + + switch(waveNumber) + { + case 0: textId = "1er Assaut à l'entrée Ouest de Orgrimmar en Approche !"; + me->SummonCreature(100065, 1753.5770f, -3987.4057f, 48.8544f, 3.60f); + me->SummonCreature(100066, 1756.5201f, -3988.6333f, 49.0605f, 3.60f); + me->SummonCreature(100067, 1755.1279f, -3991.0725f, 48.7217f, 3.60f); + me->SummonCreature(100068, 1728.6073f, -3999.0375f, 51.2886f, 0.46f); + me->SummonCreature(100069, 1726.7478f, -4001.9130f, 51.8847f, 0.46f); + me->SummonCreature(100070, 1729.9404f, -4002.9021f, 50.9726f, 0.46f); + break; + case 1: textId = "2ème Assaut à l'entrée Ouest de Orgrimmar en Approche !"; + me->SummonCreature(100065, 1753.5770f, -3987.4057f, 48.8544f, 3.60f); + me->SummonCreature(100066, 1756.5201f, -3988.6333f, 49.0605f, 3.60f); + me->SummonCreature(100067, 1755.1279f, -3991.0725f, 48.7217f, 3.60f); + me->SummonCreature(100068, 1728.6073f, -3999.0375f, 51.2886f, 0.46f); + me->SummonCreature(100069, 1726.7478f, -4001.9130f, 51.8847f, 0.46f); + me->SummonCreature(100070, 1729.9404f, -4002.9021f, 50.9726f, 0.46f); + break; + case 2: textId = "3ème Assaut à l'entrée Ouest de Orgrimmar en Approche !"; + me->SummonCreature(100065, 1753.5770f, -3987.4057f, 48.8544f, 3.60f); + me->SummonCreature(100066, 1756.5201f, -3988.6333f, 49.0605f, 3.60f); + me->SummonCreature(100067, 1755.1279f, -3991.0725f, 48.7217f, 3.60f); + me->SummonCreature(100068, 1728.6073f, -3999.0375f, 51.2886f, 0.46f); + me->SummonCreature(100069, 1726.7478f, -4001.9130f, 51.8847f, 0.46f); + me->SummonCreature(100070, 1729.9404f, -4002.9021f, 50.9726f, 0.46f); + break; + case 3: textId = "4ème Assaut à l'entrée Ouest de Orgrimmar en Approche !"; + me->SummonCreature(100065, 1753.5770f, -3987.4057f, 48.8544f, 3.60f); + me->SummonCreature(100066, 1756.5201f, -3988.6333f, 49.0605f, 3.60f); + me->SummonCreature(100067, 1755.1279f, -3991.0725f, 48.7217f, 3.60f); + me->SummonCreature(100068, 1728.6073f, -3999.0375f, 51.2886f, 0.46f); + me->SummonCreature(100069, 1726.7478f, -4001.9130f, 51.8847f, 0.46f); + me->SummonCreature(100070, 1729.9404f, -4002.9021f, 50.9726f, 0.46f); + break; + case 4: textId = "5ème Assaut à l'entrée Ouest de Orgrimmar en Approche !"; + me->SummonCreature(100065, 1753.5770f, -3987.4057f, 48.8544f, 3.60f); + me->SummonCreature(100066, 1756.5201f, -3988.6333f, 49.0605f, 3.60f); + me->SummonCreature(100067, 1755.1279f, -3991.0725f, 48.7217f, 3.60f); + me->SummonCreature(100068, 1728.6073f, -3999.0375f, 51.2886f, 0.46f); + me->SummonCreature(100069, 1726.7478f, -4001.9130f, 51.8847f, 0.46f); + me->SummonCreature(100070, 1729.9404f, -4002.9021f, 50.9726f, 0.46f); + break; + case 5: textId = "6ème Assaut à l'entrée Ouest de Orgrimmar en Approche !"; + me->SummonCreature(100065, 1753.5770f, -3987.4057f, 48.8544f, 3.60f); + me->SummonCreature(100066, 1756.5201f, -3988.6333f, 49.0605f, 3.60f); + me->SummonCreature(100067, 1755.1279f, -3991.0725f, 48.7217f, 3.60f); + me->SummonCreature(100068, 1728.6073f, -3999.0375f, 51.2886f, 0.46f); + me->SummonCreature(100069, 1726.7478f, -4001.9130f, 51.8847f, 0.46f); + me->SummonCreature(100070, 1729.9404f, -4002.9021f, 50.9726f, 0.46f); + break; + case 6: textId = "7ème Assaut à l'entrée Ouest de Orgrimmar en Approche !"; + me->SummonCreature(100065, 1753.5770f, -3987.4057f, 48.8544f, 3.60f); + me->SummonCreature(100066, 1756.5201f, -3988.6333f, 49.0605f, 3.60f); + me->SummonCreature(100067, 1755.1279f, -3991.0725f, 48.7217f, 3.60f); + me->SummonCreature(100068, 1728.6073f, -3999.0375f, 51.2886f, 0.46f); + me->SummonCreature(100069, 1726.7478f, -4001.9130f, 51.8847f, 0.46f); + me->SummonCreature(100070, 1729.9404f, -4002.9021f, 50.9726f, 0.46f); + break; + case 7: textId = "8ème Assaut à l'entrée Ouest de Orgrimmar en Approche !"; + me->SummonCreature(100065, 1753.5770f, -3987.4057f, 48.8544f, 3.60f); + me->SummonCreature(100066, 1756.5201f, -3988.6333f, 49.0605f, 3.60f); + me->SummonCreature(100067, 1755.1279f, -3991.0725f, 48.7217f, 3.60f); + me->SummonCreature(100068, 1728.6073f, -3999.0375f, 51.2886f, 0.46f); + me->SummonCreature(100069, 1726.7478f, -4001.9130f, 51.8847f, 0.46f); + me->SummonCreature(100070, 1729.9404f, -4002.9021f, 50.9726f, 0.46f); + break; + case 8: textId = "Attention, Le Roi de la Gardes Foudrepique est en approche Préparez-vous !"; + me->SummonCreature(100065, 1753.5770f, -3987.4057f, 48.8544f, 3.60f); + me->SummonCreature(100066, 1756.5201f, -3988.6333f, 49.0605f, 3.60f); + me->SummonCreature(100067, 1755.1279f, -3991.0725f, 48.7217f, 3.60f); + me->SummonCreature(100068, 1728.6073f, -3999.0375f, 51.2886f, 0.46f); + me->SummonCreature(100069, 1726.7478f, -4001.9130f, 51.8847f, 0.46f); + me->SummonCreature(100070, 1729.9404f, -4002.9021f, 50.9726f, 0.46f); + break; + } + + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, textId); + } + + void JumpToNextStep(uint32 uiTimer) + { + uiPhaseTimer = uiTimer; + ++uiStep; + + if(debug) + { + //sprintf(msg, " UiStep : %u", uiStep); + sLog->outString("DEBUG: Voljinuistep est a %u", uiStep); + } + } + + void WaypointReached(uint32 uiPointId) + { + switch(variation) + { + case 0: + switch(uiPointId) + { + case 2: + SetEscortPaused(true); + me->MonsterYell("Sir! Mes sentinelles m'informent de l'arrivé des Gardes Foudrepique à entrée Ouest!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + uiStep=0; + JumpToNextStep(6000); + break; + case 4: + SetEscortPaused(true); + me->MonsterYell("Il nous faut agir au plus vite Seigneur, et organiser la défense de Orgrimmar avec toutes les Forces disponibles!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + uiStep=0; + JumpToNextStep(36000); + break; + case 6: + SetEscortPaused(true); + me->MonsterYell("Que le Raid repoussant les forces de l'entrée Ouest me suive!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(10000); + break; + case 10: + SetEscortPaused(true); + me->MonsterSay("Nous devons empécher cela à tout prix! Vite dépéchez-vous en Monture!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(5000); + break; + case 56: + SetEscortPaused(true); + me->MonsterSay("Force de la Horde je vous en conjure, stopper cette invasion coute que coute!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + JumpToNextStep(8000); + break; + } + break; + + case 1: + switch(uiPointId) + { + case 1: + + break; + + } + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1922.92f, -4169.02f, 41.1287f); + AddWaypoint(2, 1920.83f, -4139.05f, 40.5743f); + AddWaypoint(3, 1922.58f, -4132.8f, 42.4854f); + AddWaypoint(4, 1922.22f, -4131.66f, 42.9641f); + AddWaypoint(5, 1923.68f, -4128.39f, 43.1868f); + AddWaypoint(6, 1922.98f, -4132.24f, 42.5701f); + AddWaypoint(7, 1924.00f, -4177.52f, 41.1381f); + AddWaypoint(8, 1927.13f, -4233.31f, 42.212f); + AddWaypoint(9, 1929.12f, -4268.86f, 33.8055f); + AddWaypoint(10, 1928.74f, -4278.55f, 30.1563f); + AddWaypoint(11, 1923.00f, -4286.92f, 29.0653f); + AddWaypoint(12, 1908.47f, -4283.99f, 30.4107f); + AddWaypoint(13, 1896.56f, -4285.11f, 30.3345f); + AddWaypoint(14, 1887.49f, -4277.57f, 31.2886f); + AddWaypoint(15, 1873.69f, -4264.47f, 32.7104f); + AddWaypoint(16, 1861.71f, -4253.88f, 39.4624f); + AddWaypoint(17, 1853.44f, -4246.67f, 41.5356f); + AddWaypoint(18, 1843.07f, -4244.33f, 41.5404f); + AddWaypoint(19, 1830.95f, -4240.86f, 40.9158f); + AddWaypoint(20, 1807.87f, -4233.71f, 39.9508f); + AddWaypoint(21, 1791.92f, -4228.77f, 39.4907f); + AddWaypoint(22, 1771.12f, -4220.1f, 40.3989f); + AddWaypoint(23, 1755.89f, -4214.85f, 42.2805f); + AddWaypoint(24, 1744.94f, -4215.56f, 43.9258f); + AddWaypoint(25, 1732.81f, -4221.06f, 45.131f); + AddWaypoint(26, 1721.02f, -4227.24f, 46.9779f); + AddWaypoint(27, 1705.16f, -4233.48f, 49.6747f); + AddWaypoint(28, 1693.72f, -4241.16f, 51.2892f); + AddWaypoint(29, 1680.99f, -4248.99f, 51.2178f); + AddWaypoint(30, 1666.5f, -4256.06f, 51.5647f); + AddWaypoint(31, 1655.92f, -4263.72f, 50.7199f); + AddWaypoint(32, 1639.36f, -4272.36f, 47.8174f); + AddWaypoint(33, 1630.24f, -4269.85f, 47.0499f); + AddWaypoint(34, 1610.78f, -4250.17f, 45.8264f); + AddWaypoint(35, 1591.43f, -4227.24f, 44.5667f); + AddWaypoint(36, 1583.06f, -4201.97f, 41.8674f); + AddWaypoint(37, 1578.5f, -4188.23f, 39.9917f); + AddWaypoint(38, 1581.07f, -4169.96f, 37.3638f); + AddWaypoint(39, 1583.17f, -4154.93f, 34.6844f); + AddWaypoint(40, 1595.6f, -4136.41f, 32.0771f); + AddWaypoint(41, 1606.22f, -4120.58f, 29.6183f); + AddWaypoint(42, 1632.51f, -4110.23f, 29.9468f); + AddWaypoint(43, 1668.9f, -4095.9f, 35.3224f); + AddWaypoint(44, 1694.81f, -4087.99f, 38.4731f); + AddWaypoint(45, 1711.78f, -4082.8f, 40.9801f); + AddWaypoint(46, 1728.75f, -4071.02f, 44.1838f); + AddWaypoint(47, 1735.78f, -4062.00f, 44.4613f); + AddWaypoint(48, 1742.95f, -4035.15f, 44.968f); + AddWaypoint(49, 1747.14f, -4019.47f, 45.7663f); + AddWaypoint(50, 1733.48f, -3984.77f, 48.1909f); + AddWaypoint(51, 1726.64f, -3967.39f, 48.9136f); + AddWaypoint(52, 1712.98f, -3943.59f, 49.6634f); + AddWaypoint(53, 1701.83f, -3923.75f, 51.7773f); + AddWaypoint(54, 1687.67f, -3901.63f, 51.0631f); + AddWaypoint(55, 1695.54f, -3896.68f, 51.0629f); + AddWaypoint(56, 1694.55f, -3897.3f, 51.0629f); + break; + default: + sLog->outError("Unexpected movement variation (%i) in npcvoljinAI::SetupMovement call!", variation); + return; + } + if(npcvoljinAI* pEscortAI = CAST_AI(npcvoljinAI, me->AI())) + { + pEscortAI->Start(true, true); + pEscortAI->SetDespawnAtEnd(false); + pEscortAI->SetDespawnAtFar(false); + me->setActive(true); + bStepping = true; + } + } + + void UpdateAI(const uint32 diff) + { + npc_escortAI::UpdateAI(diff); + + if(bStepping) + { + if(uiPhaseTimer <= diff) + { + switch(uiStep) + { + case 0: + SetRun(true); + JumpToNextStep(2000); + break; + case 1: + SetEscortPaused(false); + break; + case 2: + SetEscortPaused(false); + break; + case 3: + me->Mount(MOUNT_MODEL2); + me->SetSpeed(MOVE_RUN, SPEED_MOUNT); + JumpToNextStep(5000); + break; + case 4: + me->MonsterSay("En avant Héros.", LANG_UNIVERSAL, 0); + JumpToNextStep(10000); + case 5: + SetEscortPaused(false); + break; + case 6: + me->Unmount(); + me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetReactState(REACT_PASSIVE); + JumpToNextStep(5000); + break; + case 7: + + me->SummonCreature(100049, 1696.2297f, -3906.9270f, 51.7777f, 2.09f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000); + me->SummonCreature(100049, 1689.3312f, -3912.1164f, 51.7774f, 2.13f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000); + me->MonsterSay("Voici deux véhicules encore en état de marchent pour vous aider dans votre Combat", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 8: + me->MonsterSay("Placez-y vos deux meilleurs Pilotes Héros. Ils vous seront d'un grands soutiens!", LANG_UNIVERSAL, 0); + JumpToNextStep(5000); + break; + case 9: + me->MonsterYell("Nous ferons payer à la Gardes Foudrepique cette trahison!", LANG_UNIVERSAL, 0); + me->PlayDirectSound(11803); + me->HandleEmoteCommand(378); + JumpToNextStep(5000); + + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + break; + case 10: + + if(!WaveDone) + { + uint32 mobCounter = 0 , deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 11: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Premier Assaut à la Porte Ouest d'Orgrimmar Stoppé !"); + me->MonsterTextEmote("Premier Assaut à la Porte Ouest d'Orgrimmar Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 12: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 13: + + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 14: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Deuxième Assaut à la Porte Ouest d'Orgrimmar Stoppé !"); + me->MonsterTextEmote("Deuxième Assaut à la Porte Ouest d'Orgrimmar Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 15: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Courage Héros, il faut tenir bon!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 16: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 17: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Troisième Assaut à la Porte Ouest d'Orgrimmar Stoppé !"); + me->MonsterTextEmote("Troisième Assaut à la Porte Ouest d'Orgrimmar Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 18: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 19: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 20: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Quatrième Assaut à la Porte Ouest d'Orgrimmar Stoppé !"); + me->MonsterTextEmote("Quatrième Assaut à la Porte Ouest d'Orgrimmar Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 21: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("Ne faiblissez pas dans l'effort! Il faut sauver notre Roi à tout prix!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 22: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 23: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Cinquième Assaut à la Porte Ouest d'Orgrimmar Stoppé !"); + me->MonsterTextEmote("Cinquième Assaut à la Porte Ouest d'Orgrimmar Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 24: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 25: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 26: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Sixième Assaut à la Porte Ouest d'Orgrimmar Stoppé !"); + me->MonsterTextEmote("Sixième Assaut à la Porte Ouest d'Orgrimmar Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 27: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + me->MonsterYell("La Garde Foudrepique sont de redoutables Guerriers, mais vous Héros, vous l'êtes encore plus! Continuez !", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + break; + case 28: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 29: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Septième Assaut à la Porte Ouest d'Orgrimmar Stoppé !"); + me->MonsterTextEmote("Septième Assaut à la Porte Ouest d'Orgrimmar Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 30: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + + JumpToNextStep(2000); + break; + case 31: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 32: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "Huitème Assaut à la Porte Ouest d'Orgrimmar Stoppé !"); + me->MonsterTextEmote("Huitème Assaut à la Porte Ouest d'Orgrimmar Stoppé !", 0, true); + JumpToNextStep(4000); + break; + case 33: + if(!WaveDone) + { + SpawnWaveGroup(uiWave, uiWaveGUID); + uiWave++; + WavesCounter++; + } + me->MonsterYell("Bravo Héros, vous venez de repousser les assauts de la Garde de Foudrepique! Préparez-vous ! Leur chef arrive!", LANG_UNIVERSAL, 0); + me->HandleEmoteCommand(378); + me->PlayDirectSound(11803); + JumpToNextStep(6000); + break; + case 34: + if(!WaveDone) + { + uint32 mobCounter = 0, deadCounter = 0; + + for(uint8 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i) + { + if(uiWaveGUID[i] == 0) break; + ++mobCounter; + Unit* pTemp = Unit::GetCreature(*me, uiWaveGUID[i]); + if(!pTemp || pTemp->isDead()) ++deadCounter; + } + + if(mobCounter <= deadCounter) JumpToNextStep(0); + else uiPhaseTimer = 1000; + } + else JumpToNextStep(2000); + break; + case 35: + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, "La Horde a Défendu Vaillament L'Entrée Ouest d'Orgrimmar!"); + me->MonsterTextEmote("La Horde a Défendu Vaillament L'Entrée Ouest d'Orgrimmar!", 0, true); + JumpToNextStep(4000); + break; + case 36: +/* if (CAST_AI(npc_lycanthrope::npc_lycanthropeAI, me->AI())->Die1 == true && (CAST_AI(npc_bomberman::npc_bombermanAI, me->AI())->Die == true) + { */ + me->MonsterYell("Bravo Héros, vous venez à nouveau de prouver votre valeur! L'Assauts de la Garde de Foudrepique est stoppé. Orgrimmar vous sera indéfiniment redevable!", LANG_UNIVERSAL, 0); + JumpToNextStep(4000); + break; + case 37: + SetEscortPaused(true); + JumpToNextStep(4000); + break; + case 38: + break; + } + }else uiPhaseTimer -= diff; + } + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npcvoljinAI(creature); + } +}; + + + + + +//Partie Event Aux Portes de Orgrimmar + + +/*******************************************/ +/* Boss Shaman Entrée Porte Orgrimmar */ +/*******************************************/ + +struct TransformStruct +{ + std::string text; + uint32 spell, unaura; +}; + +static TransformStruct Transform[4] = +{ + {YELL_TRANSFORM_BEAR, SPELL_SHAPE_OF_THE_BEAR, SPELL_WHIRLWIND}, + {YELL_TRANSFORM_EAGLE, SPELL_SHAPE_OF_THE_EAGLE, SPELL_SHAPE_OF_THE_BEAR}, + {YELL_TRANSFORM_LYNX, SPELL_SHAPE_OF_THE_LYNX, SPELL_SHAPE_OF_THE_EAGLE}, + {YELL_TRANSFORM_DRAGONHAWK, SPELL_SHAPE_OF_THE_DRAGONHAWK, SPELL_SHAPE_OF_THE_LYNX} +}; + + +class boss_shaman : public CreatureScript +{ + public: + + boss_shaman() : CreatureScript("boss_shaman") { } + + struct boss_shamanAI : public npc_escortAI + { + boss_shamanAI(Creature *pCreature) : npc_escortAI(pCreature), Summons(me) + { + Reset(); + } + + uint64 SpiritGUID[4]; + uint64 ClawTargetGUID; + uint64 TankGUID; + + uint32 Phase; + uint32 health_20; + + uint32 Intro_Timer; + uint32 Berserk_Timer; + + uint32 Whirlwind_Timer; + uint32 Grievous_Throw_Timer; + + uint32 Creeping_Paralysis_Timer; + uint32 Overpower_Timer; + + uint32 Claw_Rage_Timer; + uint32 Lynx_Rush_Timer; + uint32 Claw_Counter; + uint32 Claw_Loop_Timer; + + uint32 Flame_Whirl_Timer; + uint32 Flame_Breath_Timer; + uint32 Pillar_Of_Fire_Timer; + uint32 EclairTimer; + + SummonList Summons; + + void Reset() + { + + Phase = 0; + health_20 = me->CountPctFromMaxHealth(20); + Intro_Timer = 37000; + Berserk_Timer = 600000; + Whirlwind_Timer = 7000; + Grievous_Throw_Timer = 8000; + Creeping_Paralysis_Timer = 7000; + Overpower_Timer = 0; + Claw_Rage_Timer = 5000; + Lynx_Rush_Timer = 14000; + Claw_Loop_Timer = 0; + Claw_Counter = 0; + Flame_Whirl_Timer = 5000; + Flame_Breath_Timer = 6000; + Pillar_Of_Fire_Timer = 7000; + ClawTargetGUID = 0; + TankGUID = 0; + EclairTimer = 25000; + SetupMovement(0); + + Summons.DespawnAll(); + + me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 33975); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(YELL_INTRO, LANG_UNIVERSAL, 0); + EnterPhase(0); + } + + void KilledUnit(Unit* /*victim*/) + { + if (Intro_Timer) + return; + + switch (urand(0, 1)) + { + case 0: + me->MonsterYell(YELL_KILL_ONE, LANG_UNIVERSAL, 0); + break; + case 1: + me->MonsterYell(YELL_KILL_TWO, LANG_UNIVERSAL, 0); + break; + } + } + + void JustDied(Unit* /*Killer*/) + { + Summons.DespawnAll(); + me->MonsterYell(YELL_DEATH, LANG_UNIVERSAL, 0); + Summons.DespawnEntry(CREATURE_COLUMN_OF_FIRE); + + if (Unit* Temp = Unit::GetUnit(*me, SpiritGUID[3])) + Temp->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_DEAD); + } + + void AttackStart(Unit* who) + { + if (Phase == 2) + AttackStartNoMove(who); + else + ScriptedAI::AttackStart(who); + } + + void DoMeleeAttackIfReady() + { + if (!me->IsNonMeleeSpellCasted(false)) + { + if (me->isAttackReady() && me->IsWithinMeleeRange(me->getVictim())) + { + if (Phase == 1 && !Overpower_Timer) + { + uint32 health = me->getVictim()->GetHealth(); + me->AttackerStateUpdate(me->getVictim()); + if (me->getVictim() && health == me->getVictim()->GetHealth()) + { + DoCast(me->getVictim(), SPELL_OVERPOWER, false); + Overpower_Timer = 5000; + } + } else me->AttackerStateUpdate(me->getVictim()); + me->resetAttackTimer(); + } + } + } + + void JustSummoned(Creature* summon) + { + Summons.Summon(summon); + } + + void SummonedCreatureDespawn(Creature* summon) + { + Summons.Despawn(summon); + } + + void EnterPhase(uint32 NextPhase) + { + switch(NextPhase) + { + case 0: + break; + case 1: + case 2: + case 3: + case 4: + // a n'utiliser que si on veut le placer à un endroit fix pour son changement de forme + //DoTeleportTo(CENTER_X, CENTER_Y, CENTER_Z, 100); + DoResetThreat(); + me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0); + me->RemoveAurasDueToSpell(Transform[Phase].unaura); + DoCast(me, Transform[Phase].spell); + me->MonsterYell(Transform[Phase].text.c_str(), LANG_UNIVERSAL, 0); + + if (Phase > 0) + { + if (Unit* Temp = Unit::GetUnit(*me, SpiritGUID[Phase - 1])) + Temp->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_DEAD); + } + if (Unit* Temp = Unit::GetUnit(*me, SpiritGUID[NextPhase - 1])) + Temp->CastSpell(me, SPELL_SIPHON_SOUL, false); + if (NextPhase == 2) + { + me->GetMotionMaster()->Clear(); + DoCast(me, SPELL_ENERGY_STORM, true); // aura ennemi + for (uint8 i = 0; i < 4; ++i) + { + Creature* Vortex = DoSpawnCreature(CREATURE_FEATHER_VORTEX, 0, 0, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); + if (Vortex) + { + Vortex->CastSpell(Vortex, SPELL_CYCLONE_PASSIVE, true); + Vortex->CastSpell(Vortex, SPELL_CYCLONE_VISUAL, true); + Vortex->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + Vortex->SetSpeed(MOVE_RUN, 1.0f); + Vortex->AI()->AttackStart(SelectTarget(SELECT_TARGET_RANDOM, 0)); + Vortex->SetInCombatWithZone(); + } + } + } + else + me->AI()->AttackStart(me->getVictim()); + if (NextPhase == 3) + { + me->RemoveAurasDueToSpell(SPELL_ENERGY_STORM); + Summons.DespawnEntry(CREATURE_FEATHER_VORTEX); + me->GetMotionMaster()->MoveChase(me->getVictim()); + } + break; + default: + break; + } + Phase = NextPhase; + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 53: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1221.62f, -4422.77f, 21.9209f); + AddWaypoint(2, 1270.31f, -4401.52f, 26.3033f); + AddWaypoint(3, 1314.47f, -4385.09f, 26.2462f); + AddWaypoint(4, 1354.59f, -4376.00f, 26.1279f); + AddWaypoint(5, 1391.1f, -4369.96f, 26.4445f); + AddWaypoint(6, 1427.95f, -4365.39f, 25.4634f); + AddWaypoint(7, 1436.8f, -4423.09f, 25.4634f); + AddWaypoint(8, 1459.23f, -4419.92f, 25.4634f); + AddWaypoint(9, 1491.15f, -4415.4f, 23.5301f); + AddWaypoint(10, 1522.6f, -4410.96f, 15.284f); + AddWaypoint(11, 1548.36f, -4420.03f, 9.85442f); + AddWaypoint(12, 1570.69f, -4428.89f, 6.76123f); + AddWaypoint(13, 1587.59f, -4436.54f, 6.39865f); + AddWaypoint(14, 1594.33f, -4439.59f, 6.10432f); + AddWaypoint(15, 1624.02f, -4428.67f, 12.692f); + AddWaypoint(16, 1643.96f, -4417.93f, 16.077f); + AddWaypoint(17, 1674.51f, -4399.74f, 19.6353f); + AddWaypoint(18, 1687.26f, -4386.08f, 24.2474f); + AddWaypoint(19, 1695.7f, -4377.03f, 24.7986f); + AddWaypoint(20, 1712.69f, -4379.26f, 29.4186f); + AddWaypoint(21, 1728.64f, -4401.44f, 34.7188f); + AddWaypoint(22, 1741.14f, -4418.82f, 36.3628f); + AddWaypoint(23, 1741.00f, -4441.28f, 37.7394f); + AddWaypoint(24, 1732.12f, -4461.09f, 35.5236f); + AddWaypoint(25, 1728.8f, -4479.2f, 32.2259f); + AddWaypoint(26, 1739.49f, -4499.83f, 28.2859f); + AddWaypoint(27, 1746.6f, -4511.67f, 27.1155f); + AddWaypoint(28, 1769.48f, -4527.51f, 25.1248f); + AddWaypoint(29, 1800.91f, -4530.41f, 21.3775f); + AddWaypoint(30, 1829.76f, -4532.82f, 20.5663f); + AddWaypoint(31, 1852.41f, -4534.71f, 23.6605f); + AddWaypoint(32, 1875.44f, -4528.23f, 26.0842f); + AddWaypoint(33, 1893.17f, -4519.57f, 27.5799f); + AddWaypoint(34, 1915.07f, -4494.98f, 24.0922f); + AddWaypoint(35, 1924.15f, -4477.02f, 23.2576f); + AddWaypoint(36, 1942.12f, -4441.48f, 23.2129f); + AddWaypoint(37, 1940.97f, -4424.16f, 22.6779f); + AddWaypoint(38, 1937.82f, -4376.4f, 20.7328f); + AddWaypoint(39, 1936.42f, -4355.16f, 19.8516f); + AddWaypoint(40, 1934.46f, -4325.38f, 20.265f); + AddWaypoint(41, 1932.59f, -4300.46f, 24.0374f); + AddWaypoint(42, 1931.05f, -4278.44f, 30.2063f); + AddWaypoint(43, 1929.64f, -4258.21f, 38.4621f); + AddWaypoint(44, 1928.68f, -4244.47f, 42.1286f); + AddWaypoint(45, 1927.07f, -4227.58f, 42.3219f); + AddWaypoint(46, 1926.18f, -4218.05f, 41.1723f); + AddWaypoint(47, 1925.46f, -4210.38f, 42.3221f); + AddWaypoint(48, 1924.33f, -4192.34f, 42.1687f); + AddWaypoint(49, 1923.24f, -4174.75f, 41.1292f); + AddWaypoint(50, 1921.88f, -4153.46f, 40.6131f); + AddWaypoint(51, 1920.87f, -4138.67f, 40.5688f); + AddWaypoint(52, 1920.48f, -4133.08f, 42.2368f); + AddWaypoint(53, 1920.37f, -4131.49f, 42.9961f); + break; + default: sLog->outError("Unexpected movement variation (%i) in boss_shamanAI::SetupMovement call!", variation); + return; + } + + + if(boss_shamanAI* pEscortAI = CAST_AI(boss_shamanAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 diff) + { + npc_escortAI::UpdateAI(diff); + if (!TankGUID) + { + if (!UpdateVictim()) + return; + + if (me->GetHealth() < health_20 * (4 - Phase)) + EnterPhase(Phase + 1); + } + + if (Berserk_Timer <= diff) + { + DoCast(me, SPELL_BERSERK, true); + me->MonsterYell(YELL_BERSERK, LANG_UNIVERSAL, 0); + Berserk_Timer = 60000; + } else Berserk_Timer -= diff; + + switch (Phase) + { + case 0: + if (Intro_Timer) + { + if (Intro_Timer <= diff) + { + me->MonsterYell(YELL_AGGRO, LANG_UNIVERSAL, 0); + Intro_Timer = 0; + } else Intro_Timer -= diff; + } + + if (Whirlwind_Timer <= diff) + { + DoCast(me, SPELL_WHIRLWIND); + Whirlwind_Timer = 15000 + rand()%5000; + } else Whirlwind_Timer -= diff; + + if (Grievous_Throw_Timer <= diff) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) + DoCast(target, SPELL_GRIEVOUS_THROW, false); + Grievous_Throw_Timer = 10000; + } else Grievous_Throw_Timer -= diff; + break; + case 1: + if (Creeping_Paralysis_Timer <= diff) + { + DoCast(me, SPELL_CREEPING_PARALYSIS); + Creeping_Paralysis_Timer = 20000; + } else Creeping_Paralysis_Timer -= diff; + + if (Overpower_Timer <= diff) + { + // implemented in DoMeleeAttackIfReady() + Overpower_Timer = 0; + } else Overpower_Timer -= diff; + break; + case 2: + if(EclairTimer <= diff) + { + if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, SPELL_ECLAIR); + EclairTimer = 25000; + } else EclairTimer -= diff; + return; + case 3: + if (Claw_Rage_Timer <= diff) + { + if (!TankGUID) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + TankGUID = me->getVictim()->GetGUID(); + me->SetSpeed(MOVE_RUN, 5.0f); + AttackStart(target); // change de cible + Claw_Rage_Timer = 0; + Claw_Loop_Timer = 500; + Claw_Counter = 0; + } + } + else if (!Claw_Rage_Timer) + { + if (Claw_Loop_Timer <= diff) + { + Unit* target = me->getVictim(); + if (!target || !target->isTargetableForAttack()) target = Unit::GetUnit(*me, TankGUID); + if (!target || !target->isTargetableForAttack()) target = SelectTarget(SELECT_TARGET_RANDOM, 0); + if (target) + { + AttackStart(target); + if (me->IsWithinMeleeRange(target)) + { + DoCast(target, SPELL_CLAW_RAGE_DAMAGE, true); + ++Claw_Counter; + if (Claw_Counter == 12) + { + Claw_Rage_Timer = 15000 + rand()%5000; + me->SetSpeed(MOVE_RUN, 1.2f); + AttackStart(Unit::GetUnit(*me, TankGUID)); + TankGUID = 0; + return; + } + else + Claw_Loop_Timer = 500; + } + } + else + { + EnterEvadeMode(); // if (target) + return; + } + } else Claw_Loop_Timer -= diff; + } //if (TankGUID) + } else Claw_Rage_Timer -= diff; + + if (Lynx_Rush_Timer <= diff) + { + if (!TankGUID) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + TankGUID = me->getVictim()->GetGUID(); + me->SetSpeed(MOVE_RUN, 5.0f); + AttackStart(target); // Change de cible + Lynx_Rush_Timer = 0; + Claw_Counter = 0; + } + } + else if (!Lynx_Rush_Timer) + { + Unit* target = me->getVictim(); + if (!target || !target->isTargetableForAttack()) + { + target = SelectTarget(SELECT_TARGET_RANDOM, 0); + AttackStart(target); + } + if (target) + { + if (me->IsWithinMeleeRange(target)) + { + DoCast(target, SPELL_LYNX_RUSH_DAMAGE, true); + ++Claw_Counter; + if (Claw_Counter == 9) + { + Lynx_Rush_Timer = 15000 + rand()%5000; + me->SetSpeed(MOVE_RUN, 1.2f); + AttackStart(Unit::GetUnit(*me, TankGUID)); + TankGUID = 0; + } + else + AttackStart(SelectTarget(SELECT_TARGET_RANDOM, 0)); + } + } + else + { + EnterEvadeMode(); // if (target) + return; + } + } //if (TankGUID) + } else Lynx_Rush_Timer -= diff; + + break; + case 4: + if (Flame_Whirl_Timer <= diff) + { + DoCast(me, SPELL_FLAME_WHIRL); + Flame_Whirl_Timer = 12000; + }Flame_Whirl_Timer -= diff; + + if (Pillar_Of_Fire_Timer <= diff) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(target, SPELL_SUMMON_PILLAR); + Pillar_Of_Fire_Timer = 10000; + } else Pillar_Of_Fire_Timer -= diff; + + if (Flame_Breath_Timer <= diff) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + me->SetInFront(target); + DoCast(me, SPELL_FLAME_BREATH); + Flame_Breath_Timer = 10000; + } else Flame_Breath_Timer -= diff; + break; + default: + break; + } + + if (!TankGUID) + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_shamanAI(creature); + } +}; + +class mob_shaman_vortex : public CreatureScript +{ + public: + + mob_shaman_vortex() + : CreatureScript("mob_shaman_vortex") + { + } + + struct mob_shaman_vortexAI : public ScriptedAI + { + mob_shaman_vortexAI(Creature* c) : ScriptedAI(c) {} + + void Reset() {} + + void EnterCombat(Unit* /*pTarget*/) {} + + void SpellHit(Unit* caster, const SpellEntry* spell) + { + if (spell->Id == SPELL_ZAP_INFORM) + DoCast(caster, SPELL_ZAP_DAMAGE, true); + } + + void UpdateAI(const uint32 /*diff*/) + { + //Si le vortex perds la cible, il check une autre cible + if (me->IsWithinMeleeRange(me->getVictim())) + AttackStart(SelectTarget(SELECT_TARGET_RANDOM, 0)); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new mob_shaman_vortexAI(creature); + } +}; + + + + + + + + + +/*##################################################### + # Boss Général Garde Foudrepique Porte Orgrimmar # + #####################################################*/ + + + +class npcgeneralfourdrepique : public CreatureScript +{ +public: + + npcgeneralfourdrepique() : CreatureScript("npcgeneralfourdrepique") { } + + struct npcgeneralfourdrepiqueAI : public npc_escortAI + { + npcgeneralfourdrepiqueAI(Creature *pCreature) : npc_escortAI(pCreature),summons(me) + { + Reset(); + } + + + uint32 EnrageTimer; + uint32 ChillingWaveTimer; + uint32 WaterBoltVolleyTimer; + uint32 WaterBlastTimer; + uint32 CleaveTimer; + uint32 GripTimer; + uint32 SonicBurstTimer; + SummonList summons; + bool Enraged; + bool Seegeant; + bool health_75; + bool health_40; + bool health_25; + + void Reset() + { + summons.DespawnAll(); + me->RestoreDisplayId(); + EnrageTimer = 15000; + ChillingWaveTimer = 30000; + WaterBoltVolleyTimer = 25000; + WaterBlastTimer = 10000; + SonicBurstTimer = 53000; + GripTimer = 50000; + CleaveTimer = 8000; + Enraged = false; + Seegeant = false; + health_75 = false; + health_40 = false; + health_25 = false; + SetupMovement(0); + } + + + void SummonedCreatureDespawn(Creature* summon) + { + summons.Despawn(summon); + } + + void JustSummoned(Creature* summon) + { + summons.Summon(summon); + } + + void EnterCombat(Unit* /*who*/) + { + //SetEscortPaused(true); + me->MonsterYell(SAY_GENERALFOUDREPIQUE_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_GENERALFOUDREPIQUE_SLAY, LANG_UNIVERSAL, 0); + // En cas de mort d'un joueurs, spawn d'un Elementaire sur le corps + if (victim->GetTypeId() == TYPEID_PLAYER) + victim->SummonCreature(SUMMON_WATERELEMENTAL, victim->GetPositionX(), victim->GetPositionY(), victim->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_GENERALFOUDREPIQUE_DEATH, LANG_UNIVERSAL, 0); + summons.DespawnAll(); + me->RestoreDisplayId(); + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 70: + SetEscortPaused(true); + break; + + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1545.52f, -3855.42f, 39.4522f); + AddWaypoint(2, 1560.25f, -3853.77f, 45.0848f); + AddWaypoint(3, 1577.09f, -3851.11f, 49.7605f); + AddWaypoint(4, 1597.96f, -3853.65f, 50.1645f); + AddWaypoint(5, 1612.32f, -3849.98f, 50.5267f); + AddWaypoint(6, 1625.4f, -3840.04f, 50.0284f); + AddWaypoint(7, 1633.12f, -3838.2f, 50.1711f); + AddWaypoint(8, 1643.5f, -3838.75f, 51.0747f); + AddWaypoint(9, 1647.55f, -3842.78f, 52.7441f); + AddWaypoint(10, 1653.57f, -3851.82f, 59.9768f); + AddWaypoint(11, 1662.6f, -3865.3f, 64.4771f); + AddWaypoint(12, 1672.16f, -3879.54f, 63.2845f); + AddWaypoint(13, 1676.89f, -3886.35f, 60.1993f); + AddWaypoint(14, 1685.88f, -3899.3f, 51.0708f); + AddWaypoint(15, 1695.84f, -3913.56f, 51.7773f); + AddWaypoint(16, 1703.56f, -3925.25f, 51.7773f); + AddWaypoint(17, 1709.67f, -3934.51f, 50.1544f); + AddWaypoint(18, 1725.52f, -3962.83f, 48.8759f); + AddWaypoint(19, 1736.38f, -3984.52f, 47.2716f); + AddWaypoint(20, 1738.96f, -3997.09f, 47.2195f); + AddWaypoint(21, 1744.59f, -4024.54f, 45.6987f); + AddWaypoint(22, 1740.68f, -4043.64f, 44.4844f); + AddWaypoint(23, 1737.47f, -4059.31f, 44.3825f); + AddWaypoint(24, 1727.31f, -4075.26f, 43.2196f); + AddWaypoint(25, 1708.32f, -4085.56f, 39.9161f); + AddWaypoint(26, 1685.14f, -4091.96f, 37.0901f); + AddWaypoint(27, 1656.55f, -4099.85f, 33.3951f); + AddWaypoint(28, 1632.1f, -4109.15f, 29.7992f); + AddWaypoint(29, 1602.63f, -4123.81f, 29.8898f); + AddWaypoint(30, 1589.84f, -4142.75f, 32.8694f); + AddWaypoint(31, 1577.11f, -4171.72f, 37.2662f); + AddWaypoint(32, 1579.53f, -4199.61f, 41.4442f); + AddWaypoint(33, 1589.97f, -4223.85f, 44.4204f); + AddWaypoint(34, 1605.23f, -4244.94f, 45.2712f); + AddWaypoint(35, 1620.69f, -4261.81f, 46.6678f); + AddWaypoint(36, 1632.14f, -4270.29f, 47.2125f); + AddWaypoint(37, 1640.85f, -4272.47f, 48.1457f); + AddWaypoint(38, 1654.74f, -4264.77f, 50.602f); + AddWaypoint(39, 1667.68f, -4255.38f, 51.4956f); + AddWaypoint(40, 1683.79f, -4247.68f, 51.2676f); + AddWaypoint(41, 1693.73f, -4238.3f, 50.8625f); + AddWaypoint(42, 1710.45f, -4231.4f, 48.7469f); + AddWaypoint(43, 1730.3f, -4222.56f, 45.4007f); + AddWaypoint(44, 1739.87f, -4216.73f, 44.3453f); + AddWaypoint(45, 1747.3f, -4214.68f, 43.4378f); + AddWaypoint(46, 1762.03f, -4217.22f, 41.7605f); + AddWaypoint(47, 1785.69f, -4225.57f, 39.3759f); + AddWaypoint(48, 1806.41f, -4233.16f, 39.8077f); + AddWaypoint(49, 1824.98f, -4239.19f, 40.8322f); + AddWaypoint(50, 1850.05f, -4245.24f, 41.6494f); + AddWaypoint(51, 1859.39f, -4251.23f, 40.2888f); + AddWaypoint(52, 1866.67f, -4258.31f, 36.1059f); + AddWaypoint(53, 1874.24f, -4265.62f, 32.4813f); + AddWaypoint(54, 1887.84f, -4280.86f, 30.8224f); + AddWaypoint(55, 1897.96f, -4284.08f, 30.3276f); + AddWaypoint(56, 1913.27f, -4285.86f, 30.1993f); + AddWaypoint(57, 1924.72f, -4285.74f, 29.1809f); + AddWaypoint(58, 1929.71f, -4279.28f, 30.0934f); + AddWaypoint(59, 1930.11f, -4272.29f, 31.9134f); + AddWaypoint(60, 1929.27f, -4259.35f, 38.1011f); + AddWaypoint(61, 1928.6f, -4249.1f, 41.1866f); + AddWaypoint(62, 1928.13f, -4241.87f, 42.1701f); + AddWaypoint(63, 1926.98f, -4227.64f, 42.3229f); + AddWaypoint(64, 1926.23f, -4218.46f, 41.1732f); + AddWaypoint(65, 1925.66f, -4211.36f, 42.3222f); + AddWaypoint(66, 1923.96f, -4184.43f, 42.1629f); + AddWaypoint(67, 1923.67f, -4178.94f, 41.1508f); + AddWaypoint(68, 1922.69f, -4160.52f, 40.6109f); + AddWaypoint(69, 1921.01f, -4140.74f, 40.6021f); + AddWaypoint(70, 1920.61f, -4136.1f, 40.5292f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npcgeneralfourdrepiqueAI::SetupMovement call!", variation); + return; + } + + if (npcgeneralfourdrepiqueAI* pEscortAI = CAST_AI(npcgeneralfourdrepiqueAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if (!UpdateVictim()) + return; + /* ########################################## + # Debut Sorts pendant forme Foudrepique # + ########################################## */ + // Enrage dure 8 secondes occurance entre 20et 25 secondes + if (EnrageTimer <= uiDiff) + { + DoCast(me, ENRAGE); + EnrageTimer = urand(20000,25000); + } else EnrageTimer -= uiDiff; + if (!Seegeant) + { + // Cleave les 2ennemis devant le général + if (CleaveTimer <= uiDiff) + { + DoCastVictim(SPELL_CLEAVE); + CleaveTimer = urand(10000,15000); + } else CleaveTimer -= uiDiff; + // Attire tous les joueurs sur le boss + if (GripTimer <= uiDiff) + { + me->MonsterTextEmote(EMOTE_GENERALFOUDREPIQUE_GRIP, 0, true); + DoCast(me, SPELL_GRIP); + GripTimer = 40000; + } else GripTimer -= uiDiff; + // Lance une onde qui silence tous les joueurs à moins de 15 mètres pendant 5sec + if (SonicBurstTimer <= uiDiff) + { + DoCast(me, SONIC_BURST); + SonicBurstTimer = 40000; + } else SonicBurstTimer -= uiDiff; + // Arrivé à 75% hp transformation en Géant des mers + if (HealthBelowPct(75) && !health_75) //:Seegeant + { + me->SetDisplayId(170); + me->MonsterTextEmote(SAY_GENERALFOUDREPIQUE_MORPH, 0, true); + DoCast(me, ENRAGE); + EnrageTimer = urand(25000,35000); + health_75 = true; + Seegeant = true; + } + // Arrivé à 25% hp transformation en Géant des mers + if (HealthBelowPct(25) && !health_25) + { + me->SetDisplayId(170); + me->MonsterTextEmote(SAY_GENERALFOUDREPIQUE_MORPH, 0, true); + DoCast(me, ENRAGE); + EnrageTimer = urand(25000,35000); + health_25 = true; + Seegeant = true; + } + } + /* ########################################## + # Fin Sorts pendant forme Foudrepique # + ########################################## */ + + /* ########################################## + #Debut Sorts pendant forme Géant des mers# + ########################################## */ + if (Seegeant) + { + // Lance un trait d'eau sur un ennemi random + if (WaterBlastTimer <= uiDiff) + { + float PctHp; + PctHp = me->GetHealthPct(); + if (((int)PctHp%2) == 1) + { + // Lance un trait d'eau qui inflige 2775 à 3225 de dégats et fait tomber l'ennemi a la renverse + if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, WATER_BLAST_NORMAL); + WaterBlastTimer = urand(8000,12000); + } + else + { + // Lance un trait d'eau qui inflige 5550 à 6450 de dégats et fait tomber l'ennemi a la renverse + if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, WATER_BLAST_HERO); + WaterBlastTimer = urand(12000,15000); + } + } else WaterBlastTimer -= uiDiff; + // Lance un trait d'eau sur tous les ennemis à moins de 45mètres + if (WaterBoltVolleyTimer <= uiDiff) + { + DoCast(me, WATER_BOLT_VOLLEY); + WaterBoltVolleyTimer = urand(20000,25000); + } else WaterBoltVolleyTimer -= uiDiff; + // Inflige des dégats dans un cone de 65mètres devant le lanceur de sort + if (ChillingWaveTimer <= uiDiff) + { + DoCast(me, CHILLING_WAVE); + ChillingWaveTimer = urand(20000,30000); + } else ChillingWaveTimer -= uiDiff; + // Arrivé à 40 %hp redeviens normale + if (HealthBelowPct(40) && !health_40) + { + me->MonsterTextEmote(SAY_GENERALFOUDREPIQUE_DEMORPH, 0, true); + me->RestoreDisplayId(); + health_40 = true; + Seegeant = false; + } + // S'enrage à 15% de vie (buff 50% vitesse d'attaque 50% dommage) + if (HealthBelowPct(15) && !Enraged) + { + DoCast(me, FRENZY); + Enraged = true; + } + } + /* ########################################## + # Fin Sorts pendant forme Géant des mers # + ########################################## */ + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npcgeneralfourdrepiqueAI (pCreature); + } +}; + + + +class spell_foudrepique_icy_grip : public SpellScriptLoader +{ +public: + spell_foudrepique_icy_grip() : SpellScriptLoader("spell_foudrepique_icy_grip") { } + + class spell_foudrepique_icy_grip_SpellScript : public SpellScript + { + PrepareSpellScript(spell_foudrepique_icy_grip_SpellScript); + + bool Validate(SpellEntry const* /*pSpell*/) + { + if(!sSpellStore.LookupEntry(SPELL_ICY_GRIP_JUMP)) + return false; + return true; + } + + void HandleScript(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + if(Unit* pUnit = GetHitUnit()) + if(pUnit->isAlive()) + { + float x, y, z; + GetCaster()->GetPosition(x, y, z); + float speedXY = pUnit->GetExactDist2d(x, y) * 10.0f; + pUnit->GetMotionMaster()->MoveJump(x, y, z+1.0f, speedXY, 1.0f); + } + GetHitUnit()->CastSpell(GetCaster(), SPELL_ICY_GRIP_JUMP, true); + } + + void Register() + { + OnEffect += SpellEffectFn(spell_foudrepique_icy_grip_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_foudrepique_icy_grip_SpellScript(); + } +}; + + + +//Partie Event Aux Portes de Orgrimmar + +/***************************************/ +/* Archer Argent Wave Portes Orgrimmar */ +/***************************************/ + + +class npc_archer_argent : public CreatureScript +{ +public: + npc_archer_argent() : CreatureScript("npc_archer_argent") { } + + struct npc_archer_argentAI : public npc_escortAI + { + npc_archer_argentAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + uint32 MultiTimer; + uint32 VolleyTimer; + uint32 SnakeTimer; + uint32 PoisonTimer; + uint32 TrapTimer; + uint32 HealTimer; + bool Haste; + bool Healed; + + void Reset() + { + MultiTimer = 8000; + VolleyTimer = 15000; + SnakeTimer = 40000; + PoisonTimer = 12000; + TrapTimer = 20000; + HealTimer = 60000; + SetupMovement(0); + Haste = false; + Healed = false; + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_ARCHERARGENT_AGGRO, LANG_UNIVERSAL, 0); + //me->AddAura(BEWITCHING_AURA, me); + me->AddAura(AURA_ROT, me); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_ARCHERARGENT_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_ARCHERARGENT_DEATH, LANG_UNIVERSAL, 0); + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 53: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1221.62f, -4422.77f, 21.9209f); + AddWaypoint(2, 1270.31f, -4401.52f, 26.3033f); + AddWaypoint(3, 1314.47f, -4385.09f, 26.2462f); + AddWaypoint(4, 1354.59f, -4376.00f, 26.1279f); + AddWaypoint(5, 1391.1f, -4369.96f, 26.4445f); + AddWaypoint(6, 1427.95f, -4365.39f, 25.4634f); + AddWaypoint(7, 1436.8f, -4423.09f, 25.4634f); + AddWaypoint(8, 1459.23f, -4419.92f, 25.4634f); + AddWaypoint(9, 1491.15f, -4415.4f, 23.5301f); + AddWaypoint(10, 1522.6f, -4410.96f, 15.284f); + AddWaypoint(11, 1548.36f, -4420.03f, 9.85442f); + AddWaypoint(12, 1570.69f, -4428.89f, 6.76123f); + AddWaypoint(13, 1587.59f, -4436.54f, 6.39865f); + AddWaypoint(14, 1594.33f, -4439.59f, 6.10432f); + AddWaypoint(15, 1624.02f, -4428.67f, 12.692f); + AddWaypoint(16, 1643.96f, -4417.93f, 16.077f); + AddWaypoint(17, 1674.51f, -4399.74f, 19.6353f); + AddWaypoint(18, 1687.26f, -4386.08f, 24.2474f); + AddWaypoint(19, 1695.7f, -4377.03f, 24.7986f); + AddWaypoint(20, 1712.69f, -4379.26f, 29.4186f); + AddWaypoint(21, 1728.64f, -4401.44f, 34.7188f); + AddWaypoint(22, 1741.14f, -4418.82f, 36.3628f); + AddWaypoint(23, 1741.00f, -4441.28f, 37.7394f); + AddWaypoint(24, 1732.12f, -4461.09f, 35.5236f); + AddWaypoint(25, 1728.8f, -4479.2f, 32.2259f); + AddWaypoint(26, 1739.49f, -4499.83f, 28.2859f); + AddWaypoint(27, 1746.6f, -4511.67f, 27.1155f); + AddWaypoint(28, 1769.48f, -4527.51f, 25.1248f); + AddWaypoint(29, 1800.91f, -4530.41f, 21.3775f); + AddWaypoint(30, 1829.76f, -4532.82f, 20.5663f); + AddWaypoint(31, 1852.41f, -4534.71f, 23.6605f); + AddWaypoint(32, 1875.44f, -4528.23f, 26.0842f); + AddWaypoint(33, 1893.17f, -4519.57f, 27.5799f); + AddWaypoint(34, 1915.07f, -4494.98f, 24.0922f); + AddWaypoint(35, 1924.15f, -4477.02f, 23.2576f); + AddWaypoint(36, 1942.12f, -4441.48f, 23.2129f); + AddWaypoint(37, 1940.97f, -4424.16f, 22.6779f); + AddWaypoint(38, 1937.82f, -4376.4f, 20.7328f); + AddWaypoint(39, 1936.42f, -4355.16f, 19.8516f); + AddWaypoint(40, 1934.46f, -4325.38f, 20.265f); + AddWaypoint(41, 1932.59f, -4300.46f, 24.0374f); + AddWaypoint(42, 1931.05f, -4278.44f, 30.2063f); + AddWaypoint(43, 1929.64f, -4258.21f, 38.4621f); + AddWaypoint(44, 1928.68f, -4244.47f, 42.1286f); + AddWaypoint(45, 1927.07f, -4227.58f, 42.3219f); + AddWaypoint(46, 1926.18f, -4218.05f, 41.1723f); + AddWaypoint(47, 1925.46f, -4210.38f, 42.3221f); + AddWaypoint(48, 1924.33f, -4192.34f, 42.1687f); + AddWaypoint(49, 1923.24f, -4174.75f, 41.1292f); + AddWaypoint(50, 1921.88f, -4153.46f, 40.6131f); + AddWaypoint(51, 1920.87f, -4138.67f, 40.5688f); + AddWaypoint(52, 1920.48f, -4133.08f, 42.2368f); + AddWaypoint(53, 1920.37f, -4131.49f, 42.9961f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_archer_argentAI::SetupMovement call!", variation); + return; + } + + + if(npc_archer_argentAI* pEscortAI = CAST_AI(npc_archer_argentAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + // Tire Multiple toutes les 8 secondes + if(MultiTimer <= uiDiff) + { + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, MULTISHOT); + MultiTimer = 8000; + } else MultiTimer -= uiDiff; + + // Volley toutes les 15 secondes sur une cible random + if(VolleyTimer <= uiDiff) + { + DoCastAOE(VOLLEY); + VolleyTimer = 15000; + } else VolleyTimer -= uiDiff; + + // Pièges toutes les 10 secondes sur une cible random + if(SnakeTimer <= uiDiff) + { + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0)) + for(uint8 i = 1; i <= 3; i++) + { + me->SummonCreature(SUMMONED_SNAKE, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + } + SnakeTimer = 40000; + } else SnakeTimer -= uiDiff; + + // AOE Poison toutes les 12 secondes + /* if (PoisonTimer <= uiDiff) + { + DoCastAOE(BOLT_VOLLEY); + PoisonTimer = 12000; + } else PoisonTimer -= uiDiff; */ + + // Trap de glace sur le tank toutes les 20 secondes + if(TrapTimer <= uiDiff) + { + me->MonsterYell(SAY_ARCHERARGENT_ICE, LANG_UNIVERSAL, 0); + DoCast(me->getVictim(), ICE_TRAP); + TrapTimer = 20000; + } else TrapTimer -= uiDiff; + + // Se Heal toutes les 60 secondes + if(HealTimer <= uiDiff) + { + DoCast(me, REJUVENATION); + HealTimer = 60000; + } else HealTimer -= uiDiff; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_archer_argentAI (pCreature); + } +}; + + + +/***************************************/ +/* Mage Argent Wave portes Orgrimmar */ +/***************************************/ + + +class npc_mage_argent : public CreatureScript +{ +public: + npc_mage_argent() : CreatureScript("npc_mage_argent") { } + + struct npc_mage_argentAI : public npc_escortAI + { + npc_mage_argentAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint32 BurstTimer; + uint32 GriefTimer; + uint32 FlameTimer; + uint32 PiercingTimer; + uint32 HarvestTimer; + + void Reset() + { + BurstTimer = 30000; + GriefTimer = 20000; + FlameTimer = 15000; + PiercingTimer = 10000; + HarvestTimer = 45000; + SetupMovement(0); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_MAGEARGENT_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_MAGEARGENT_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_MAGEARGENT_DEATH, LANG_UNIVERSAL, 0); + } + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 53: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1221.62f, -4422.77f, 21.9209f); + AddWaypoint(2, 1270.31f, -4401.52f, 26.3033f); + AddWaypoint(3, 1314.47f, -4385.09f, 26.2462f); + AddWaypoint(4, 1354.59f, -4376.00f, 26.1279f); + AddWaypoint(5, 1391.1f, -4369.96f, 26.4445f); + AddWaypoint(6, 1427.95f, -4365.39f, 25.4634f); + AddWaypoint(7, 1436.8f, -4423.09f, 25.4634f); + AddWaypoint(8, 1459.23f, -4419.92f, 25.4634f); + AddWaypoint(9, 1491.15f, -4415.4f, 23.5301f); + AddWaypoint(10, 1522.6f, -4410.96f, 15.284f); + AddWaypoint(11, 1548.36f, -4420.03f, 9.85442f); + AddWaypoint(12, 1570.69f, -4428.89f, 6.76123f); + AddWaypoint(13, 1587.59f, -4436.54f, 6.39865f); + AddWaypoint(14, 1594.33f, -4439.59f, 6.10432f); + AddWaypoint(15, 1624.02f, -4428.67f, 12.692f); + AddWaypoint(16, 1643.96f, -4417.93f, 16.077f); + AddWaypoint(17, 1674.51f, -4399.74f, 19.6353f); + AddWaypoint(18, 1687.26f, -4386.08f, 24.2474f); + AddWaypoint(19, 1695.7f, -4377.03f, 24.7986f); + AddWaypoint(20, 1712.69f, -4379.26f, 29.4186f); + AddWaypoint(21, 1728.64f, -4401.44f, 34.7188f); + AddWaypoint(22, 1741.14f, -4418.82f, 36.3628f); + AddWaypoint(23, 1741.00f, -4441.28f, 37.7394f); + AddWaypoint(24, 1732.12f, -4461.09f, 35.5236f); + AddWaypoint(25, 1728.8f, -4479.2f, 32.2259f); + AddWaypoint(26, 1739.49f, -4499.83f, 28.2859f); + AddWaypoint(27, 1746.6f, -4511.67f, 27.1155f); + AddWaypoint(28, 1769.48f, -4527.51f, 25.1248f); + AddWaypoint(29, 1800.91f, -4530.41f, 21.3775f); + AddWaypoint(30, 1829.76f, -4532.82f, 20.5663f); + AddWaypoint(31, 1852.41f, -4534.71f, 23.6605f); + AddWaypoint(32, 1875.44f, -4528.23f, 26.0842f); + AddWaypoint(33, 1893.17f, -4519.57f, 27.5799f); + AddWaypoint(34, 1915.07f, -4494.98f, 24.0922f); + AddWaypoint(35, 1924.15f, -4477.02f, 23.2576f); + AddWaypoint(36, 1942.12f, -4441.48f, 23.2129f); + AddWaypoint(37, 1940.97f, -4424.16f, 22.6779f); + AddWaypoint(38, 1937.82f, -4376.4f, 20.7328f); + AddWaypoint(39, 1936.42f, -4355.16f, 19.8516f); + AddWaypoint(40, 1934.46f, -4325.38f, 20.265f); + AddWaypoint(41, 1932.59f, -4300.46f, 24.0374f); + AddWaypoint(42, 1931.05f, -4278.44f, 30.2063f); + AddWaypoint(43, 1929.64f, -4258.21f, 38.4621f); + AddWaypoint(44, 1928.68f, -4244.47f, 42.1286f); + AddWaypoint(45, 1927.07f, -4227.58f, 42.3219f); + AddWaypoint(46, 1926.18f, -4218.05f, 41.1723f); + AddWaypoint(47, 1925.46f, -4210.38f, 42.3221f); + AddWaypoint(48, 1924.33f, -4192.34f, 42.1687f); + AddWaypoint(49, 1923.24f, -4174.75f, 41.1292f); + AddWaypoint(50, 1921.88f, -4153.46f, 40.6131f); + AddWaypoint(51, 1920.87f, -4138.67f, 40.5688f); + AddWaypoint(52, 1920.48f, -4133.08f, 42.2368f); + AddWaypoint(53, 1920.37f, -4131.49f, 42.9961f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_argentAI::SetupMovement call!", variation); + return; + } + + if(npc_mage_argentAI* pEscortAI = CAST_AI(npc_mage_argentAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + if(BurstTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + me->DeleteThreatList(); + DoCast(me->getVictim(), SHADOW_BURST); + BurstTimer = urand(25000,35000); + } else BurstTimer -= uiDiff; + + if(GriefTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0)) + DoCast(pTarget, STORM_OF_GRIEF); + GriefTimer = 20000; + } else GriefTimer -= uiDiff; + + if(PiercingTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_TOPAGGRO,0)) + DoCast(pTarget, PIERCING_SHADOW); + PiercingTimer = 10000; + } else PiercingTimer -= uiDiff; + + if(FlameTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + DoCastAOE(SHADOW_FLAME); + FlameTimer = 15000; + } else FlameTimer -= uiDiff; + + if(HarvestTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + me->MonsterYell(SAY_MAGEARGENT_SOUL, LANG_UNIVERSAL, 0); + DoCastAOE(HARVEST_SOUL); + HarvestTimer = 45000; + } else HarvestTimer -= uiDiff; + + DoSpellAttackIfReady(SHADOW_BOLT); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_argentAI (pCreature); + } +}; + + +/*********************************************/ +/* Infanterie Argent Wave portes Orgrimmar */ +/*********************************************/ + + +class npc_infanterie_argent : public CreatureScript +{ +public: + npc_infanterie_argent() : CreatureScript("npc_infanterie_argent") { } + + struct npc_infanterie_argentAI : public npc_escortAI + { + npc_infanterie_argentAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint32 EnrageTimer; + uint32 WoundTimer; + uint32 FeverTimer; + uint32 BiteTimer; + bool Enraged; + + void Reset() + { + EnrageTimer = 15000; + WoundTimer = 5000; + FeverTimer = 12000; + BiteTimer = 60000; + SetupMovement(0); + Enraged = false; + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_INFANTERIEARGENT_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_INFANTERIEARGENT_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_INFANTERIEARGENT_DEATH, LANG_UNIVERSAL, 0); + } + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 53: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1221.62f, -4422.77f, 21.9209f); + AddWaypoint(2, 1270.31f, -4401.52f, 26.3033f); + AddWaypoint(3, 1314.47f, -4385.09f, 26.2462f); + AddWaypoint(4, 1354.59f, -4376.00f, 26.1279f); + AddWaypoint(5, 1391.1f, -4369.96f, 26.4445f); + AddWaypoint(6, 1427.95f, -4365.39f, 25.4634f); + AddWaypoint(7, 1436.8f, -4423.09f, 25.4634f); + AddWaypoint(8, 1459.23f, -4419.92f, 25.4634f); + AddWaypoint(9, 1491.15f, -4415.4f, 23.5301f); + AddWaypoint(10, 1522.6f, -4410.96f, 15.284f); + AddWaypoint(11, 1548.36f, -4420.03f, 9.85442f); + AddWaypoint(12, 1570.69f, -4428.89f, 6.76123f); + AddWaypoint(13, 1587.59f, -4436.54f, 6.39865f); + AddWaypoint(14, 1594.33f, -4439.59f, 6.10432f); + AddWaypoint(15, 1624.02f, -4428.67f, 12.692f); + AddWaypoint(16, 1643.96f, -4417.93f, 16.077f); + AddWaypoint(17, 1674.51f, -4399.74f, 19.6353f); + AddWaypoint(18, 1687.26f, -4386.08f, 24.2474f); + AddWaypoint(19, 1695.7f, -4377.03f, 24.7986f); + AddWaypoint(20, 1712.69f, -4379.26f, 29.4186f); + AddWaypoint(21, 1728.64f, -4401.44f, 34.7188f); + AddWaypoint(22, 1741.14f, -4418.82f, 36.3628f); + AddWaypoint(23, 1741.00f, -4441.28f, 37.7394f); + AddWaypoint(24, 1732.12f, -4461.09f, 35.5236f); + AddWaypoint(25, 1728.8f, -4479.2f, 32.2259f); + AddWaypoint(26, 1739.49f, -4499.83f, 28.2859f); + AddWaypoint(27, 1746.6f, -4511.67f, 27.1155f); + AddWaypoint(28, 1769.48f, -4527.51f, 25.1248f); + AddWaypoint(29, 1800.91f, -4530.41f, 21.3775f); + AddWaypoint(30, 1829.76f, -4532.82f, 20.5663f); + AddWaypoint(31, 1852.41f, -4534.71f, 23.6605f); + AddWaypoint(32, 1875.44f, -4528.23f, 26.0842f); + AddWaypoint(33, 1893.17f, -4519.57f, 27.5799f); + AddWaypoint(34, 1915.07f, -4494.98f, 24.0922f); + AddWaypoint(35, 1924.15f, -4477.02f, 23.2576f); + AddWaypoint(36, 1942.12f, -4441.48f, 23.2129f); + AddWaypoint(37, 1940.97f, -4424.16f, 22.6779f); + AddWaypoint(38, 1937.82f, -4376.4f, 20.7328f); + AddWaypoint(39, 1936.42f, -4355.16f, 19.8516f); + AddWaypoint(40, 1934.46f, -4325.38f, 20.265f); + AddWaypoint(41, 1932.59f, -4300.46f, 24.0374f); + AddWaypoint(42, 1931.05f, -4278.44f, 30.2063f); + AddWaypoint(43, 1929.64f, -4258.21f, 38.4621f); + AddWaypoint(44, 1928.68f, -4244.47f, 42.1286f); + AddWaypoint(45, 1927.07f, -4227.58f, 42.3219f); + AddWaypoint(46, 1926.18f, -4218.05f, 41.1723f); + AddWaypoint(47, 1925.46f, -4210.38f, 42.3221f); + AddWaypoint(48, 1924.33f, -4192.34f, 42.1687f); + AddWaypoint(49, 1923.24f, -4174.75f, 41.1292f); + AddWaypoint(50, 1921.88f, -4153.46f, 40.6131f); + AddWaypoint(51, 1920.87f, -4138.67f, 40.5688f); + AddWaypoint(52, 1920.48f, -4133.08f, 42.2368f); + AddWaypoint(53, 1920.37f, -4131.49f, 42.9961f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_infanterie_argentAI::SetupMovement call!", variation); + return; + } + + if(npc_infanterie_argentAI* pEscortAI = CAST_AI(npc_infanterie_argentAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + if(EnrageTimer <= uiDiff) + { + DoCast(me, ENRAGER); + EnrageTimer = urand(20000,25000); + } else EnrageTimer -= uiDiff; + + //Lance Tourbillion sur une cible en random + if(BiteTimer <= uiDiff) + { + DoCast(me, WORGEN_BIT); + //if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + //me->AddAura(WORGEN_CAL, pTarget); + BiteTimer = 60000; + } else BiteTimer -= uiDiff; + + if(WoundTimer <= uiDiff) + { + DoCast(me->getVictim(), MORTALE_WOUND); + WoundTimer = 5000; + } else WoundTimer -= uiDiff; + + if(FeverTimer <= uiDiff) + { + DoCastAOE(DECREPIT); + FeverTimer = 20000; + } else FeverTimer -= uiDiff; + + // Deviens enrager arrivé à 15% hp (augmente 50% attaque 50% domage) + if(HealthBelowPct(15) && !Enraged) + { + DoCast(me, FRENZI); + Enraged = true; + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_infanterie_argentAI (pCreature); + } +}; + + + + + + + + +/*********************************************/ +/* Orc de Bataille H2 Wave Entrée Orgrimmar */ +/*********************************************/ + + +class npc_orc_bataille : public CreatureScript +{ + +public: + npc_orc_bataille() : CreatureScript("npc_orc_bataille") { } + + struct npc_orc_batailleAI : public npc_escortAI + { + npc_orc_batailleAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 3: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1424.79f, -4369.48f, 25.4634f); + AddWaypoint(2, 1398.2f, -4373.26f, 25.4634f); + AddWaypoint(3, 1371.76f, -4378.33f, 26.0585f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_orc_batailleAI::SetupMovement call!", variation); + return; + } + + if(npc_orc_batailleAI* pEscortAI = CAST_AI(npc_orc_batailleAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_orc_batailleAI (pCreature); + } +}; + + + + +/*********************************************/ +/* Orc de Bataille1 H2 Wave Entrée Orgrimmar */ +/*********************************************/ + + +class npc_orc_bataille1 : public CreatureScript +{ + +public: + npc_orc_bataille1() : CreatureScript("npc_orc_bataille1") { } + + struct npc_orc_bataille1AI : public npc_escortAI + { + npc_orc_bataille1AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 3: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1426.5f, -4368.83f, 25.4625f); + AddWaypoint(2, 1396.02f, -4371.97f, 25.4625f); + AddWaypoint(3, 1373.73f, -4375.51f, 26.0448f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_orc_bataille1AI::SetupMovement call!", variation); + return; + } + + if(npc_orc_bataille1AI* pEscortAI = CAST_AI(npc_orc_bataille1AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_orc_bataille1AI (pCreature); + } +}; + + + + +/*********************************************/ +/* Orc de Bataille2 H2 Wave Entrée Orgrimmar */ +/*********************************************/ + + +class npc_orc_bataille2 : public CreatureScript +{ + +public: + npc_orc_bataille2() : CreatureScript("npc_orc_bataille2") { } + + struct npc_orc_bataille2AI : public npc_escortAI + { + npc_orc_bataille2AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 3: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1428.45f, -4366.02f, 25.4625f); + AddWaypoint(2, 1397.36f, -4369.63f, 25.4625f); + AddWaypoint(3, 1370.62f, -4373.39f, 26.0536f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_orc_bataille2AI::SetupMovement call!", variation); + return; + } + + if(npc_orc_bataille2AI* pEscortAI = CAST_AI(npc_orc_bataille2AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_orc_bataille2AI (pCreature); + } +}; + + + + + + + + + +/*********************************************/ +/* Orc de Bataille3 H2 Wave Entrée Orgimmar */ +/*********************************************/ + + +class npc_orc_bataille3 : public CreatureScript +{ + +public: + npc_orc_bataille3() : CreatureScript("npc_orc_bataille3") { } + + struct npc_orc_bataille3AI : public npc_escortAI + { + npc_orc_bataille3AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 3: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1429.85f, -4362.61f, 25.4625f); + AddWaypoint(2, 1396.36f, -4366.83f, 25.4625f); + AddWaypoint(3, 1370.15f, -4370.2f, 26.0556f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_orc_bataille3AI::SetupMovement call!", variation); + return; + } + + if(npc_orc_bataille3AI* pEscortAI = CAST_AI(npc_orc_bataille3AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_orc_bataille3AI (pCreature); + } +}; + + + + + +/*********************************************/ +/* Orc de Bataille4 H2 Wave Entrée Orgimmar */ +/*********************************************/ + + +class npc_orc_bataille4 : public CreatureScript +{ + +public: + npc_orc_bataille4() : CreatureScript("npc_orc_bataille4") { } + + struct npc_orc_bataille4AI : public npc_escortAI + { + npc_orc_bataille4AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 3: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1432.12f, -4360.27f, 25.4628f); + AddWaypoint(2, 1396.02f, -4366.02f, 25.4628f); + AddWaypoint(3, 1372.98f, -4370.12f, 26.0388f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_orc_bataille4AI::SetupMovement call!", variation); + return; + } + + if(npc_orc_bataille4AI* pEscortAI = CAST_AI(npc_orc_bataille4AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_orc_bataille4AI (pCreature); + } +}; + + + + + + +/*********************************************/ +/* Orc de Bataille5 H2 Wave Entrée Orgimmar */ +/*********************************************/ + + +class npc_orc_bataille5 : public CreatureScript +{ + +public: + npc_orc_bataille5() : CreatureScript("npc_orc_bataille5") { } + + struct npc_orc_bataille5AI : public npc_escortAI + { + npc_orc_bataille5AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 3: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1434.76f, -4360.51f, 25.4624f); + AddWaypoint(2, 1395.91f, -4364.25f, 25.4624f); + AddWaypoint(3, 1369.64f, -4368.31f, 26.0521f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_orc_bataille5AI::SetupMovement call!", variation); + return; + } + + if(npc_orc_bataille5AI* pEscortAI = CAST_AI(npc_orc_bataille5AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_orc_bataille5AI (pCreature); + } +}; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/****************************************************************************************************************************************************************************************************** +/*****************************************************************************************************************************************************************************************************/ + + + +//Partie Event Porte Ouest de Orgrimmar + + +/**********************************************************/ +/* Infanterie Foudrepique Wave Porte Ouest de Orgrimmar */ +/**********************************************************/ + + +class npc_infanterie_foudrepique : public CreatureScript +{ + +public: + npc_infanterie_foudrepique() : CreatureScript("npc_infanterie_foudrepique") { } + + struct npc_infanterie_foudrepiqueAI : public npc_escortAI + { + npc_infanterie_foudrepiqueAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint32 RageTimer; + uint32 TourbillonTimer; + uint32 ChaineTimer; + uint32 HurlementTimer; + bool health_15; + bool Enraged; + + void Reset() + { + RageTimer = 30000; + TourbillonTimer = 18000; + ChaineTimer = 15000; + HurlementTimer = 8000; + health_15 = false; + Enraged = false; + SetupMovement(0); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_INFANTERIEFOUDREPIQUE_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_INFANTERIEFOUDREPIQUE_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_INFANTERIEFOUDREPIQUE_DEATH, LANG_UNIVERSAL, 0); + + } + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 70: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1545.52f, -3855.42f, 39.4522f); + AddWaypoint(2, 1560.25f, -3853.77f, 45.0848f); + AddWaypoint(3, 1577.09f, -3851.11f, 49.7605f); + AddWaypoint(4, 1597.96f, -3853.65f, 50.1645f); + AddWaypoint(5, 1612.32f, -3849.98f, 50.5267f); + AddWaypoint(6, 1625.4f, -3840.04f, 50.0284f); + AddWaypoint(7, 1633.12f, -3838.2f, 50.1711f); + AddWaypoint(8, 1643.5f, -3838.75f, 51.0747f); + AddWaypoint(9, 1647.55f, -3842.78f, 52.7441f); + AddWaypoint(10, 1653.57f, -3851.82f, 59.9768f); + AddWaypoint(11, 1662.6f, -3865.3f, 64.4771f); + AddWaypoint(12, 1672.16f, -3879.54f, 63.2845f); + AddWaypoint(13, 1676.89f, -3886.35f, 60.1993f); + AddWaypoint(14, 1685.88f, -3899.3f, 51.0708f); + AddWaypoint(15, 1695.84f, -3913.56f, 51.7773f); + AddWaypoint(16, 1703.56f, -3925.25f, 51.7773f); + AddWaypoint(17, 1709.67f, -3934.51f, 50.1544f); + AddWaypoint(18, 1725.52f, -3962.83f, 48.8759f); + AddWaypoint(19, 1736.38f, -3984.52f, 47.2716f); + AddWaypoint(20, 1738.96f, -3997.09f, 47.2195f); + AddWaypoint(21, 1744.59f, -4024.54f, 45.6987f); + AddWaypoint(22, 1740.68f, -4043.64f, 44.4844f); + AddWaypoint(23, 1737.47f, -4059.31f, 44.3825f); + AddWaypoint(24, 1727.31f, -4075.26f, 43.2196f); + AddWaypoint(25, 1708.32f, -4085.56f, 39.9161f); + AddWaypoint(26, 1685.14f, -4091.96f, 37.0901f); + AddWaypoint(27, 1656.55f, -4099.85f, 33.3951f); + AddWaypoint(28, 1632.1f, -4109.15f, 29.7992f); + AddWaypoint(29, 1602.63f, -4123.81f, 29.8898f); + AddWaypoint(30, 1589.84f, -4142.75f, 32.8694f); + AddWaypoint(31, 1577.11f, -4171.72f, 37.2662f); + AddWaypoint(32, 1579.53f, -4199.61f, 41.4442f); + AddWaypoint(33, 1589.97f, -4223.85f, 44.4204f); + AddWaypoint(34, 1605.23f, -4244.94f, 45.2712f); + AddWaypoint(35, 1620.69f, -4261.81f, 46.6678f); + AddWaypoint(36, 1632.14f, -4270.29f, 47.2125f); + AddWaypoint(37, 1640.85f, -4272.47f, 48.1457f); + AddWaypoint(38, 1654.74f, -4264.77f, 50.602f); + AddWaypoint(39, 1667.68f, -4255.38f, 51.4956f); + AddWaypoint(40, 1683.79f, -4247.68f, 51.2676f); + AddWaypoint(41, 1693.73f, -4238.3f, 50.8625f); + AddWaypoint(42, 1710.45f, -4231.4f, 48.7469f); + AddWaypoint(43, 1730.3f, -4222.56f, 45.4007f); + AddWaypoint(44, 1739.87f, -4216.73f, 44.3453f); + AddWaypoint(45, 1747.3f, -4214.68f, 43.4378f); + AddWaypoint(46, 1762.03f, -4217.22f, 41.7605f); + AddWaypoint(47, 1785.69f, -4225.57f, 39.3759f); + AddWaypoint(48, 1806.41f, -4233.16f, 39.8077f); + AddWaypoint(49, 1824.98f, -4239.19f, 40.8322f); + AddWaypoint(50, 1850.05f, -4245.24f, 41.6494f); + AddWaypoint(51, 1859.39f, -4251.23f, 40.2888f); + AddWaypoint(52, 1866.67f, -4258.31f, 36.1059f); + AddWaypoint(53, 1874.24f, -4265.62f, 32.4813f); + AddWaypoint(54, 1887.84f, -4280.86f, 30.8224f); + AddWaypoint(55, 1897.96f, -4284.08f, 30.3276f); + AddWaypoint(56, 1913.27f, -4285.86f, 30.1993f); + AddWaypoint(57, 1924.72f, -4285.74f, 29.1809f); + AddWaypoint(58, 1929.71f, -4279.28f, 30.0934f); + AddWaypoint(59, 1930.11f, -4272.29f, 31.9134f); + AddWaypoint(60, 1929.27f, -4259.35f, 38.1011f); + AddWaypoint(61, 1928.6f, -4249.1f, 41.1866f); + AddWaypoint(62, 1928.13f, -4241.87f, 42.1701f); + AddWaypoint(63, 1926.98f, -4227.64f, 42.3229f); + AddWaypoint(64, 1926.23f, -4218.46f, 41.1732f); + AddWaypoint(65, 1925.66f, -4211.36f, 42.3222f); + AddWaypoint(66, 1923.96f, -4184.43f, 42.1629f); + AddWaypoint(67, 1923.67f, -4178.94f, 41.1508f); + AddWaypoint(68, 1922.69f, -4160.52f, 40.6109f); + AddWaypoint(69, 1921.01f, -4140.74f, 40.6021f); + AddWaypoint(70, 1920.61f, -4136.1f, 40.5292f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_infanterie_foudrepiqueAI::SetupMovement call!", variation); + return; + } + + if(npc_infanterie_foudrepiqueAI* pEscortAI = CAST_AI(npc_infanterie_foudrepiqueAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + + void SetInCombat() + { + Map *map = me->GetMap(); + return; + + Map::PlayerList const &PlayerList = map->GetPlayers(); + for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) + { + if(Player* i_pl = i->getSource()) + if(!i_pl->isGameMaster() && i_pl->isAlive() && me->GetDistance(i_pl) <= 100) + { + me->SetInCombatWith(i_pl); + i_pl->SetInCombatWith(me); + me->AddThreat(i_pl, 1.0f); + } + } + } + + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + if(RageTimer <= uiDiff) + { + DoCast(me, RAGE); + RageTimer = urand(28000,30000); + } else RageTimer -= uiDiff; + + //Lance Tourbillion + if(TourbillonTimer <= uiDiff) + { + DoCast(me, TOURBILLON); + TourbillonTimer = 18000; + } else TourbillonTimer -= uiDiff; + + //Lance Chain de Cristal sur sa cible + if(ChaineTimer <= uiDiff) + { + DoCast(me->getVictim(), CHAINCRISTAL); + ChaineTimer = 15000; + } else ChaineTimer -= uiDiff; + + + //Lance Hurlement sur une cible random + if(HurlementTimer <= uiDiff) + { + + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + DoCast(pTarget, HURLEMENT); + HurlementTimer = 8000; + } else HurlementTimer -= uiDiff; + + + // Deviens enrager arrivé à 15% hp (augmente 50% attaque 50% domage) + if(HealthBelowPct(15) && !Enraged) + { + DoCast(me, FRENZ); + Enraged = true; + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_infanterie_foudrepiqueAI (pCreature); + } +}; + + + +/********************************************************/ +/* Mage Foudrepique WavePorte Ouest de Orgrimmar */ +/********************************************************/ + + +class npc_mage_foudrepique : public CreatureScript +{ + +public: + npc_mage_foudrepique() : CreatureScript("npc_mage_foudrepique") { } + + struct npc_mage_foudrepiqueAI : public npc_escortAI + { + npc_mage_foudrepiqueAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint32 ChainTimer; + uint32 LavaTimer; + uint32 FlameTimer; + uint32 ShockTimer; + bool Haste; + bool Healed; + + void Reset() + { + ChainTimer = 8000; + LavaTimer = 15000; + FlameTimer = 4000; + ShockTimer = 20000; + Haste = false; + Healed = false; + SetupMovement(0); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_MAGEFOUDREPIQUE_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_MAGEFOUDREPIQUE_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_MAGEFOUDREPIQUE_DEATH, LANG_UNIVERSAL, 0); + } + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 70: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1545.52f, -3855.42f, 39.4522f); + AddWaypoint(2, 1560.25f, -3853.77f, 45.0848f); + AddWaypoint(3, 1577.09f, -3851.11f, 49.7605f); + AddWaypoint(4, 1597.96f, -3853.65f, 50.1645f); + AddWaypoint(5, 1612.32f, -3849.98f, 50.5267f); + AddWaypoint(6, 1625.4f, -3840.04f, 50.0284f); + AddWaypoint(7, 1633.12f, -3838.2f, 50.1711f); + AddWaypoint(8, 1643.5f, -3838.75f, 51.0747f); + AddWaypoint(9, 1647.55f, -3842.78f, 52.7441f); + AddWaypoint(10, 1653.57f, -3851.82f, 59.9768f); + AddWaypoint(11, 1662.6f, -3865.3f, 64.4771f); + AddWaypoint(12, 1672.16f, -3879.54f, 63.2845f); + AddWaypoint(13, 1676.89f, -3886.35f, 60.1993f); + AddWaypoint(14, 1685.88f, -3899.3f, 51.0708f); + AddWaypoint(15, 1695.84f, -3913.56f, 51.7773f); + AddWaypoint(16, 1703.56f, -3925.25f, 51.7773f); + AddWaypoint(17, 1709.67f, -3934.51f, 50.1544f); + AddWaypoint(18, 1725.52f, -3962.83f, 48.8759f); + AddWaypoint(19, 1736.38f, -3984.52f, 47.2716f); + AddWaypoint(20, 1738.96f, -3997.09f, 47.2195f); + AddWaypoint(21, 1744.59f, -4024.54f, 45.6987f); + AddWaypoint(22, 1740.68f, -4043.64f, 44.4844f); + AddWaypoint(23, 1737.47f, -4059.31f, 44.3825f); + AddWaypoint(24, 1727.31f, -4075.26f, 43.2196f); + AddWaypoint(25, 1708.32f, -4085.56f, 39.9161f); + AddWaypoint(26, 1685.14f, -4091.96f, 37.0901f); + AddWaypoint(27, 1656.55f, -4099.85f, 33.3951f); + AddWaypoint(28, 1632.1f, -4109.15f, 29.7992f); + AddWaypoint(29, 1602.63f, -4123.81f, 29.8898f); + AddWaypoint(30, 1589.84f, -4142.75f, 32.8694f); + AddWaypoint(31, 1577.11f, -4171.72f, 37.2662f); + AddWaypoint(32, 1579.53f, -4199.61f, 41.4442f); + AddWaypoint(33, 1589.97f, -4223.85f, 44.4204f); + AddWaypoint(34, 1605.23f, -4244.94f, 45.2712f); + AddWaypoint(35, 1620.69f, -4261.81f, 46.6678f); + AddWaypoint(36, 1632.14f, -4270.29f, 47.2125f); + AddWaypoint(37, 1640.85f, -4272.47f, 48.1457f); + AddWaypoint(38, 1654.74f, -4264.77f, 50.602f); + AddWaypoint(39, 1667.68f, -4255.38f, 51.4956f); + AddWaypoint(40, 1683.79f, -4247.68f, 51.2676f); + AddWaypoint(41, 1693.73f, -4238.3f, 50.8625f); + AddWaypoint(42, 1710.45f, -4231.4f, 48.7469f); + AddWaypoint(43, 1730.3f, -4222.56f, 45.4007f); + AddWaypoint(44, 1739.87f, -4216.73f, 44.3453f); + AddWaypoint(45, 1747.3f, -4214.68f, 43.4378f); + AddWaypoint(46, 1762.03f, -4217.22f, 41.7605f); + AddWaypoint(47, 1785.69f, -4225.57f, 39.3759f); + AddWaypoint(48, 1806.41f, -4233.16f, 39.8077f); + AddWaypoint(49, 1824.98f, -4239.19f, 40.8322f); + AddWaypoint(50, 1850.05f, -4245.24f, 41.6494f); + AddWaypoint(51, 1859.39f, -4251.23f, 40.2888f); + AddWaypoint(52, 1866.67f, -4258.31f, 36.1059f); + AddWaypoint(53, 1874.24f, -4265.62f, 32.4813f); + AddWaypoint(54, 1887.84f, -4280.86f, 30.8224f); + AddWaypoint(55, 1897.96f, -4284.08f, 30.3276f); + AddWaypoint(56, 1913.27f, -4285.86f, 30.1993f); + AddWaypoint(57, 1924.72f, -4285.74f, 29.1809f); + AddWaypoint(58, 1929.71f, -4279.28f, 30.0934f); + AddWaypoint(59, 1930.11f, -4272.29f, 31.9134f); + AddWaypoint(60, 1929.27f, -4259.35f, 38.1011f); + AddWaypoint(61, 1928.6f, -4249.1f, 41.1866f); + AddWaypoint(62, 1928.13f, -4241.87f, 42.1701f); + AddWaypoint(63, 1926.98f, -4227.64f, 42.3229f); + AddWaypoint(64, 1926.23f, -4218.46f, 41.1732f); + AddWaypoint(65, 1925.66f, -4211.36f, 42.3222f); + AddWaypoint(66, 1923.96f, -4184.43f, 42.1629f); + AddWaypoint(67, 1923.67f, -4178.94f, 41.1508f); + AddWaypoint(68, 1922.69f, -4160.52f, 40.6109f); + AddWaypoint(69, 1921.01f, -4140.74f, 40.6021f); + AddWaypoint(70, 1920.61f, -4136.1f, 40.5292f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_mage_foudrepiqueAI::SetupMovement call!", variation); + return; + } + + if(npc_mage_foudrepiqueAI* pEscortAI = CAST_AI(npc_mage_foudrepiqueAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + // Chain éclair toutes les 10/15 secondes + if(ChainTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + DoCast(me->getVictim(), CHAIN_LIGHTNING); + ChainTimer = urand(10000,15000); + } else ChainTimer -= uiDiff; + + // cast lava burst toutes les 15 secondes sur une cible random + if(LavaTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + DoCast(pTarget, LAVA_BURST); + DoCast(me, LIGHTNING_SHIELD); + LavaTimer = 15000; + } else LavaTimer -= uiDiff; + + // cast tremblement de terre toutes les 20 secondes sur une cible random + if(ShockTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,1)) + DoCast(pTarget, EARTH_SHOCK); + DoCast(me, LIGHTNING_RING); + ShockTimer = 20000; + } else ShockTimer -= uiDiff; + + // cast flame chock sur le tank toutes les 12 secondes + if(FlameTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + DoCast(me->getVictim(), FLAME_SHOCK); + FlameTimer = 12000; + } else FlameTimer -= uiDiff; + + // A 25% hp se soigne avec healing wave + if(HealthBelowPct(25) && !Healed) + { + me->InterruptNonMeleeSpells(false); + DoCast(me, HEALING_WAVE); + ChainTimer = 8000; + LavaTimer = 10000; + FlameTimer = 4000; + ShockTimer = 15000; + Healed = true; + } + + // spawn des elementaire ) 50% hp + if(HealthBelowPct(50) && !Haste) + { + me->InterruptNonMeleeSpells(false); + DoCast(me, BLOODLUST); + me->MonsterYell(SAY_MAGEFOUDREPIQUE_BLOOD, LANG_UNIVERSAL, 0); + me->SummonCreature(SUMMON_AIR_ELEMENTAL, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + Haste = true; + } + + DoSpellAttackIfReady(LIGHTNING_BOLT); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_mage_foudrepiqueAI (pCreature); + } +}; + + + + + +/*******************************************************/ +/* Ingenieur Foudrepique WavePort Ouest de Orgrimmar */ +/*******************************************************/ + + + +// script de l'image du joueur + +class npc_stolen_soul2 : public CreatureScript +{ + +public: + npc_stolen_soul2() : CreatureScript("npc_stolen_soul2") { } + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_stolen_soul2AI (creature); + } + + struct npc_stolen_soul2AI : public ScriptedAI + { + npc_stolen_soul2AI(Creature* c) : ScriptedAI(c) { } + + uint8 myClass; + uint32 Class_Timer; + + void Reset() + { + Class_Timer = 1000; + } + + void EnterCombat(Unit* /*pWho*/) + { } + + void SetMyClass(uint8 myclass) + { + myClass = myclass; + } + + void UpdateAI(const uint32 uiDiff) + { + if(!UpdateVictim()) + return; + + if(Class_Timer <= uiDiff) + { + switch(myClass) + { + case CLASS_WARRIOR: + DoCast(me->getVictim(), MORTAL_STRIKE); + Class_Timer = 6000; + break; + case CLASS_PALADIN: + DoCast(me->getVictim(), HAMMER_OF_JUSTICE); + Class_Timer = 6000; + break; + case CLASS_HUNTER: + DoCast(me->getVictim(), FREEZING_TRAP); + Class_Timer = 20000; + break; + case CLASS_ROGUE: + DoCast(me->getVictim(), HEMORRHAGE); + Class_Timer = 10000; + break; + case CLASS_PRIEST: + DoCast(me->getVictim(), MIND_FLAY); + Class_Timer = 5000; + break; + case CLASS_SHAMAN: + DoCast(me->getVictim(), FROSTSHOCK); + Class_Timer = 8000; + break; + case CLASS_MAGE: + DoCast(me->getVictim(), FIREBALL); + Class_Timer = 5000; + break; + case CLASS_WARLOCK: + DoCast(me->getVictim(), CURSE_OF_AGONY); + Class_Timer = 20000; + break; + case CLASS_DRUID: + DoCast(me->getVictim(), MOONFIRE); + Class_Timer = 10000; + break; + } + } else Class_Timer -= uiDiff; + + DoMeleeAttackIfReady(); + } + }; +}; + + + + + +class npc_ingenieur_foudrepique : public CreatureScript +{ + +public: + npc_ingenieur_foudrepique() : CreatureScript("npc_ingenieur_foudrepique") { } + + struct npc_ingenieur_foudrepiqueAI : public npc_escortAI + { + npc_ingenieur_foudrepiqueAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + uint8 soulclass; + uint32 soulmodel; + uint64 soulholder; + uint32 StolenSoul_Timer; + uint32 ExplosionTimer; + uint32 CriTimer; + uint32 RocketTimer; + uint32 BombesTimer; + + void Reset() + { + soulmodel = 0; + soulholder = 0; + soulclass = 0; + StolenSoul_Timer = 25000 + rand()% 10000; + ExplosionTimer = 8000; + CriTimer = 35000; + RocketTimer = 12000; + BombesTimer = 42000; + SetupMovement(0); + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_INGENIEURFOUDREPIQUE_AGGRO, LANG_UNIVERSAL, 0); + } + + void JustSummoned(Creature* summoned) + { + if(summoned->GetEntry() == SUMMON_STOLEN_SOUL) + { + summoned->CastSpell(summoned, STOLEN_SOUL_VISUAL, false); + summoned->SetDisplayId(soulmodel); + summoned->setFaction(me->getFaction()); + + if(Unit* target = Unit::GetUnit(*me, soulholder)) + { + CAST_AI(npc_stolen_soul2::npc_stolen_soul2AI, summoned->AI())->SetMyClass(soulclass); + summoned->AI()->AttackStart(target); + } + } + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_INGENIEURFOUDREPIQUE_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_INGENIEURFOUDREPIQUE_DEATH, LANG_UNIVERSAL, 0); + } + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 70: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1545.52f, -3855.42f, 39.4522f); + AddWaypoint(2, 1560.25f, -3853.77f, 45.0848f); + AddWaypoint(3, 1577.09f, -3851.11f, 49.7605f); + AddWaypoint(4, 1597.96f, -3853.65f, 50.1645f); + AddWaypoint(5, 1612.32f, -3849.98f, 50.5267f); + AddWaypoint(6, 1625.4f, -3840.04f, 50.0284f); + AddWaypoint(7, 1633.12f, -3838.2f, 50.1711f); + AddWaypoint(8, 1643.5f, -3838.75f, 51.0747f); + AddWaypoint(9, 1647.55f, -3842.78f, 52.7441f); + AddWaypoint(10, 1653.57f, -3851.82f, 59.9768f); + AddWaypoint(11, 1662.6f, -3865.3f, 64.4771f); + AddWaypoint(12, 1672.16f, -3879.54f, 63.2845f); + AddWaypoint(13, 1676.89f, -3886.35f, 60.1993f); + AddWaypoint(14, 1685.88f, -3899.3f, 51.0708f); + AddWaypoint(15, 1695.84f, -3913.56f, 51.7773f); + AddWaypoint(16, 1703.56f, -3925.25f, 51.7773f); + AddWaypoint(17, 1709.67f, -3934.51f, 50.1544f); + AddWaypoint(18, 1725.52f, -3962.83f, 48.8759f); + AddWaypoint(19, 1736.38f, -3984.52f, 47.2716f); + AddWaypoint(20, 1738.96f, -3997.09f, 47.2195f); + AddWaypoint(21, 1744.59f, -4024.54f, 45.6987f); + AddWaypoint(22, 1740.68f, -4043.64f, 44.4844f); + AddWaypoint(23, 1737.47f, -4059.31f, 44.3825f); + AddWaypoint(24, 1727.31f, -4075.26f, 43.2196f); + AddWaypoint(25, 1708.32f, -4085.56f, 39.9161f); + AddWaypoint(26, 1685.14f, -4091.96f, 37.0901f); + AddWaypoint(27, 1656.55f, -4099.85f, 33.3951f); + AddWaypoint(28, 1632.1f, -4109.15f, 29.7992f); + AddWaypoint(29, 1602.63f, -4123.81f, 29.8898f); + AddWaypoint(30, 1589.84f, -4142.75f, 32.8694f); + AddWaypoint(31, 1577.11f, -4171.72f, 37.2662f); + AddWaypoint(32, 1579.53f, -4199.61f, 41.4442f); + AddWaypoint(33, 1589.97f, -4223.85f, 44.4204f); + AddWaypoint(34, 1605.23f, -4244.94f, 45.2712f); + AddWaypoint(35, 1620.69f, -4261.81f, 46.6678f); + AddWaypoint(36, 1632.14f, -4270.29f, 47.2125f); + AddWaypoint(37, 1640.85f, -4272.47f, 48.1457f); + AddWaypoint(38, 1654.74f, -4264.77f, 50.602f); + AddWaypoint(39, 1667.68f, -4255.38f, 51.4956f); + AddWaypoint(40, 1683.79f, -4247.68f, 51.2676f); + AddWaypoint(41, 1693.73f, -4238.3f, 50.8625f); + AddWaypoint(42, 1710.45f, -4231.4f, 48.7469f); + AddWaypoint(43, 1730.3f, -4222.56f, 45.4007f); + AddWaypoint(44, 1739.87f, -4216.73f, 44.3453f); + AddWaypoint(45, 1747.3f, -4214.68f, 43.4378f); + AddWaypoint(46, 1762.03f, -4217.22f, 41.7605f); + AddWaypoint(47, 1785.69f, -4225.57f, 39.3759f); + AddWaypoint(48, 1806.41f, -4233.16f, 39.8077f); + AddWaypoint(49, 1824.98f, -4239.19f, 40.8322f); + AddWaypoint(50, 1850.05f, -4245.24f, 41.6494f); + AddWaypoint(51, 1859.39f, -4251.23f, 40.2888f); + AddWaypoint(52, 1866.67f, -4258.31f, 36.1059f); + AddWaypoint(53, 1874.24f, -4265.62f, 32.4813f); + AddWaypoint(54, 1887.84f, -4280.86f, 30.8224f); + AddWaypoint(55, 1897.96f, -4284.08f, 30.3276f); + AddWaypoint(56, 1913.27f, -4285.86f, 30.1993f); + AddWaypoint(57, 1924.72f, -4285.74f, 29.1809f); + AddWaypoint(58, 1929.71f, -4279.28f, 30.0934f); + AddWaypoint(59, 1930.11f, -4272.29f, 31.9134f); + AddWaypoint(60, 1929.27f, -4259.35f, 38.1011f); + AddWaypoint(61, 1928.6f, -4249.1f, 41.1866f); + AddWaypoint(62, 1928.13f, -4241.87f, 42.1701f); + AddWaypoint(63, 1926.98f, -4227.64f, 42.3229f); + AddWaypoint(64, 1926.23f, -4218.46f, 41.1732f); + AddWaypoint(65, 1925.66f, -4211.36f, 42.3222f); + AddWaypoint(66, 1923.96f, -4184.43f, 42.1629f); + AddWaypoint(67, 1923.67f, -4178.94f, 41.1508f); + AddWaypoint(68, 1922.69f, -4160.52f, 40.6109f); + AddWaypoint(69, 1921.01f, -4140.74f, 40.6021f); + AddWaypoint(70, 1920.61f, -4136.1f, 40.5292f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_ingenieur_foudrepiqueAI::SetupMovement call!", variation); + return; + } + + if(npc_ingenieur_foudrepiqueAI* pEscortAI = CAST_AI(npc_ingenieur_foudrepiqueAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if (!UpdateVictim()) + return; + + //Crée une image d'un des joueurs en random + if(StolenSoul_Timer <= uiDiff) + { + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + if(target->GetTypeId() == TYPEID_PLAYER) + { + if(me->IsNonMeleeSpellCasted(false)) + me->InterruptNonMeleeSpells(true); + soulmodel = target->GetDisplayId(); + soulholder = target->GetGUID(); + soulclass = target->getClass(); + DoCast(target, STOLEN_SOUL); + me->SummonCreature(SUMMON_STOLEN_SOUL, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); + StolenSoul_Timer = 20000 + rand()% 10000; + } else StolenSoul_Timer = 1000; + } + } else StolenSoul_Timer -= uiDiff; + + + //Cast une vague explosive autour de lui + if(ExplosionTimer <= uiDiff) + { + DoCast(me, EXPLOSION); + ExplosionTimer = 8000; + } else ExplosionTimer -= uiDiff; + + //Lance Peur sur une clible random et ceux autour de la cible du random + if(CriTimer <= uiDiff) + { + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, CRI); + CriTimer = 35000; + } + } else CriTimer -= uiDiff; + + //Lance une rocket sur une cible random + if(RocketTimer <= uiDiff) + { + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, ROCKET); + RocketTimer = 12000; + } + } else RocketTimer -= uiDiff; + + + //Lance une Bombe qui stun sur une cible random + if(BombesTimer <= uiDiff) + { + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, BOMBES); + BombesTimer = 42000; + } + } else BombesTimer -= uiDiff; + + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_ingenieur_foudrepiqueAI (pCreature); + } +}; + + + + + + + + + + +/*****************************************************/ +/* Troll de Bataille H2 Wave Entrée Ouest Orgrimmar */ +/*****************************************************/ + + +class npc_troll_bataille : public CreatureScript +{ + +public: + npc_troll_bataille() : CreatureScript("npc_troll_bataille") { } + + struct npc_troll_batailleAI : public npc_escortAI + { + npc_troll_batailleAI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 4: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1745.14f, -3989.92f, 48.0638f); + AddWaypoint(2, 1728.03f, -3958.56f, 49.0743f); + AddWaypoint(3, 1707.02f, -3923.25f, 51.7779f); + AddWaypoint(4, 1699.83f, -3911.07f, 51.7779f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_troll_batailleAI::SetupMovement call!", variation); + return; + } + + if(npc_troll_batailleAI* pEscortAI = CAST_AI(npc_troll_batailleAI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_troll_batailleAI (pCreature); + } +}; + + + + +/*****************************************************/ +/* Troll de Bataille1 H2 Wave Entrée Ouest Orgrimmar */ +/*****************************************************/ + + +class npc_troll_bataille1 : public CreatureScript +{ + +public: + npc_troll_bataille1() : CreatureScript("npc_troll_bataille1") { } + + struct npc_troll_bataille1AI : public npc_escortAI + { + npc_troll_bataille1AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 4: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1743.18f, -3992.9f, 47.2279f); + AddWaypoint(2, 1721.81f, -3954.04f, 48.9854f); + AddWaypoint(3, 1705.56f, -3924.89f, 51.7776f); + AddWaypoint(4, 1698.84f, -3914.23f, 51.7776f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_troll_bataille1AI::SetupMovement call!", variation); + return; + } + + if(npc_troll_bataille1AI* pEscortAI = CAST_AI(npc_troll_bataille1AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_troll_bataille1AI (pCreature); + } +}; + + + + +/*****************************************************/ +/* Troll de Bataille2 H2 Wave Entrée Ouest Orgrimmar */ +/*****************************************************/ + + +class npc_troll_bataille2 : public CreatureScript +{ + +public: + npc_troll_bataille2() : CreatureScript("npc_troll_bataille2") { } + + struct npc_troll_bataille2AI : public npc_escortAI + { + npc_troll_bataille2AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 4: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1741.43f, -3997.52f, 46.5256f); + AddWaypoint(2, 1724.34f, -3956.23f, 48.9661f); + AddWaypoint(3, 1703.84f, -3925.29f, 51.7775f); + AddWaypoint(4, 1695.87f, -3912.99f, 51.7775f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_troll_bataille2AI::SetupMovement call!", variation); + return; + } + + if(npc_troll_bataille2AI* pEscortAI = CAST_AI(npc_troll_bataille2AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_troll_bataille2AI (pCreature); + } +}; + + + + + + + + + +/*****************************************************/ +/* Troll de Bataille3 H2 Wave Entrée Ouest Orgimmar */ +/*****************************************************/ + + +class npc_troll_bataille3 : public CreatureScript +{ + +public: + npc_troll_bataille3() : CreatureScript("npc_troll_bataille3") { } + + struct npc_troll_bataille3AI : public npc_escortAI + { + npc_troll_bataille3AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 4: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1734.33f, -3996.45f, 48.9352f); + AddWaypoint(2, 1719.93f, -3962.88f, 50.2552f); + AddWaypoint(3, 1699.7f, -3929.69f, 51.7778f); + AddWaypoint(4, 1690.6f, -3916.17f, 51.7778f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_troll_bataille3AI::SetupMovement call!", variation); + return; + } + + if(npc_troll_bataille3AI* pEscortAI = CAST_AI(npc_troll_bataille3AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_troll_bataille3AI (pCreature); + } +}; + + + + + +/*****************************************************/ +/* Troll de Bataille4 H2 Wave Entrée Ouest Orgimmar */ +/*****************************************************/ + + +class npc_troll_bataille4 : public CreatureScript +{ + +public: + npc_troll_bataille4() : CreatureScript("npc_troll_bataille4") { } + + struct npc_troll_bataille4AI : public npc_escortAI + { + npc_troll_bataille4AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 4: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1737.05f, -3997.99f, 47.975f); + AddWaypoint(2, 1722.08f, -3962.49f, 49.707f); + AddWaypoint(3, 1700.77f, -3928.34f, 51.7774f); + AddWaypoint(4, 1693.28f, -3917.18f, 51.7774f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_troll_bataille4AI::SetupMovement call!", variation); + return; + } + + if(npc_troll_bataille4AI* pEscortAI = CAST_AI(npc_troll_bataille4AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_troll_bataille4AI (pCreature); + } +}; + + + + + + +/*****************************************************/ +/* Troll de Bataille5 H2 Wave Entrée Ouest Orgimmar */ +/*****************************************************/ + + +class npc_troll_bataille5 : public CreatureScript +{ + +public: + npc_troll_bataille5() : CreatureScript("npc_troll_bataille5") { } + + struct npc_troll_bataille5AI : public npc_escortAI + { + npc_troll_bataille5AI(Creature *pCreature) : npc_escortAI(pCreature) + { + Reset(); + } + + + void Reset() + { + SetupMovement(0); + } + + + void WaypointReached(uint32 uiPointId) + { + switch(uiPointId) + { + case 4: + SetEscortPaused(true); + break; + } + } + + void SetupMovement(uint32 variation) + { + switch (variation) + { + case 0: + AddWaypoint(1, 1740.45f, -3998.83f, 46.7284f); + AddWaypoint(2, 1723.55f, -3961.89f, 49.2986f); + AddWaypoint(3, 1702.07f, -3927.28f, 51.7778f); + AddWaypoint(4, 1693.65f, -3914.03f, 51.7778f); + break; + default: sLog->outError("Unexpected movement variation (%i) in npc_troll_bataille5AI::SetupMovement call!", variation); + return; + } + + if(npc_troll_bataille5AI* pEscortAI = CAST_AI(npc_troll_bataille5AI, me->AI())) + { + pEscortAI->Start(true, true); + me->setActive(true); + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_troll_bataille5AI (pCreature); + } +}; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +void AddSC_npcevent2() +{ + new npcthrall; + new npcgoderik; + new npcvoljin; + new boss_shaman; + new mob_shaman_vortex; + new npcgeneralfourdrepique; + new spell_foudrepique_icy_grip; + new npc_infanterie_argent; + new npc_mage_argent; + new npc_archer_argent; + new npc_stolen_soul2; + new npc_orc_bataille; + new npc_orc_bataille1; + new npc_orc_bataille2; + new npc_orc_bataille3; + new npc_orc_bataille4; + new npc_orc_bataille5; + new npc_troll_bataille; + new npc_troll_bataille1; + new npc_troll_bataille2; + new npc_troll_bataille3; + new npc_troll_bataille4; + new npc_troll_bataille5; + new npc_ingenieur_foudrepique; + new npc_mage_foudrepique; + new npc_infanterie_foudrepique; +} diff --git a/src/server/scripts/World/attaquecapitalH2.h b/src/server/scripts/World/attaquecapitalH2.h new file mode 100644 index 0000000..32caaae --- /dev/null +++ b/src/server/scripts/World/attaquecapitalH2.h @@ -0,0 +1,499 @@ + +#define SPEED_WALK (0.5f) +#define SPEED_RUN (1.0f) +#define SPEED_MOUNT (1.6f) +#define MOUNT_MODEL 30070 //Monture Général Orc +#define MOUNT_MODEL2 15289 //Monture Général Troll + +// Gestion des Phases +enum Phases +{ + PHASE_NEUTRE = 0, + PHASE_INTRO, + PHASE_ONE, + PHASE_TWO +}; + +// Trash Mobs et boss spawn dans les waves +enum eCreature +{ + INFANTERIE_ARGENT = 100050, + MAGE_ARGENT = 100051, + ARCHER_ARGENT = 100052, + SHAMAN = 100006, + MAGE_FOUDREPIQUE = 100058, + INFANTERIE_FOUDREPIQUE = 100057, + INGENIEUR_FOUDREPIQUE = 100055, + GENERAL = 100053 +}; + +enum EncounterData +{ + ENCOUNTER_WAVES_NUMBER = 9, + ENCOUNTER_WAVES_MAX_SPAWNS +}; + + +//texte Boss Shaman Entrée Orgrimmar +const char* YELL_TRANSFORM_LYNX = "Laissez moi vous faire Goûter à ma forme Lynx!"; +const char* YELL_TRANSFORM_BEAR = "Ma forme Ours aura raison de vous!"; +const char* YELL_TRANSFORM_DRAGONHAWK = "Faucon-Dragon viens à moi!"; +const char* YELL_TRANSFORM_EAGLE = "Personne n'échapera à mon regards!"; + +#define YELL_KILL_ONE "La mort n'est encore que trop douce!" +#define YELL_KILL_TWO "A qui le tour?!" +#define YELL_FIRE_BREATH "Souffrez dans les Flammes!" +#define YELL_AGGRO "Venez Goûter à ma Puissanceeeeeee!" +#define YELL_BERSERK "Vous n'avez réussi qu'a libérer ma Colère!!!!" +#define YELL_DEATH "Mes Forces m..e qu...it..teeeee.." +#define YELL_INTRO "Null ne pourra s'opposer à ma Vonlonté !" + +//Transformations: +#define PHASE_BEAR 0 +#define PHASE_EAGLE 1 +#define PHASE_LYNX 2 +#define PHASE_DRAGONHAWK 3 +#define PHASE_TROLL 4 + +// Texte Archer Argent +#define SAY_ARCHERARGENT_AGGRO "L'Aube d'Argent Vaincra!" +#define SAY_ARCHERARGENT_SLAY "Nul ne pourra s'opposer!" +#define SAY_ARCHERARGENT_DEATH "Vous ne pourrez pas tenir..." +#define SAY_ARCHERARGENT_ICE "Et comme ceci , ce n'est pas mieux?" + +// texte Mage Argent +#define SAY_MAGEARGENT_AGGRO "Vous ne ferez pas le poids contre l'Aube d'argent!" +#define SAY_MAGEARGENT_SLAY "Vos futiles tentatives resterons Vaines!" +#define SAY_MAGEARGENT_DEATH "Notre Maitre aura raison de vous..." +#define SAY_MAGEARGENT_SOUL "Que les ténèbres vous recouvre!" + +// Texte Infanterie Argent +#define SAY_INFANTERIEARGENT_AGGRO "Mes Frère de l'Aube d'Argent, Chargés!" +#define SAY_INFANTERIEARGENT_SLAY "Encore un traitre qui trépasse!" +#define SAY_INFANTERIEARGENT_DEATH "Gloire... et honneur.... pour l'Aube d'Argent....." + + + +// Texte Général Garde Foudrepique +#define SAY_GENERALFOUDREPIQUE_AGGRO "La Garde Foudrepique Vaincra !" +#define SAY_GENERALFOUDREPIQUE_SLAY "J'ai en ma possession toute la puissance de l'eau !" +#define SAY_GENERALFOUDREPIQUE_DEATH "Ce n'...est p....as fini !!" +#define SAY_GENERALFOUDREPIQUE_MORPH "Général Foudrepique boit une chope et se transforme !" +#define SAY_GENERALFOUDREPIQUE_DEMORPH "Général Foudrepique reprend sa forme initiale." +#define EMOTE_GENERALFOUDREPIQUE_GRIP "Général Foudrepique va lancer Explosion Sonore. Ecartez vous !!!" + + +// texte Mage Foudrepique +#define SAY_MAGEFOUDREPIQUE_AGGRO "Venez affonter la Furie des éléments!" +#define SAY_MAGEFOUDREPIQUE_SLAY "Mettez un terme à votre agonie!" +#define SAY_MAGEFOUDREPIQUE_DEATH "La magie des gobelins... est la plus puissante..." +#define SAY_MAGEFOUDREPIQUE_BLOOD "Périssez dans la Souffrance!" + +// texte infanterie Foudrepique +#define SAY_INFANTERIEFOUDREPIQUE_AGGRO "Frêre Gobelin Chargééééééééé!!!!!!!" +#define SAY_INFANTERIEFOUDREPIQUE_SLAY "Vous trépasserez tous sous mes coups!" +#define SAY_INFANTERIEFOUDREPIQUE_DEATH "N...o..n.... impo....ssible... Argh..." + +// texte ingénieur foudrepique +#define SAY_INGENIEURFOUDREPIQUE_AGGRO "Ma puissance n'a d'égale que mon intelligence !" +#define SAY_INGENIEURFOUDREPIQUE_SLAY "Les Gobelins règneront!!!!" +#define SAY_INGENIEURFOUDREPIQUE_DEATH "Maitre.... nous avons.... échoué...." + + +//Coordonnés pour lui donner un point fix pour changer de forme (selon l'endroit ou il est spawn) +/*#define CENTER_X 120.148811f +#define CENTER_Y 703.713684f +#define CENTER_Z 45.111477f*/ + + + + +/*##################################################### +# Boss Shaman Porte Orgrimmar +######################################################*/ + +enum shamanSpells +{ + SPELL_WHIRLWIND = 17207, + SPELL_GRIEVOUS_THROW = 43093, + SPELL_CREEPING_PARALYSIS = 43095, + SPELL_OVERPOWER = 43456, + SPELL_ENERGY_STORM = 43983, + SPELL_ZAP_INFORM = 42577, + SPELL_ZAP_DAMAGE = 43137, + SPELL_SUMMON_CYCLONE = 43112, + CREATURE_FEATHER_VORTEX = 100005, + SPELL_CYCLONE_VISUAL = 43119, + SPELL_CYCLONE_PASSIVE = 43120, + SPELL_ECLAIR = 50215, + SPELL_CLAW_RAGE_HASTE = 42583, + SPELL_CLAW_RAGE_TRIGGER = 43149, + SPELL_CLAW_RAGE_DAMAGE = 43150, + SPELL_LYNX_RUSH_HASTE = 43152, + SPELL_LYNX_RUSH_DAMAGE = 43153, + SPELL_FLAME_WHIRL = 43213, + SPELL_FLAME_BREATH = 43215, + SPELL_SUMMON_PILLAR = 43216, + CREATURE_COLUMN_OF_FIRE = 24187, + SPELL_PILLAR_TRIGGER = 43218, + SPELL_SPIRIT_AURA = 42466, + SPELL_SIPHON_SOUL = 43501, + SPELL_SHAPE_OF_THE_BEAR = 42594, + SPELL_SHAPE_OF_THE_EAGLE = 42606, + SPELL_SHAPE_OF_THE_LYNX = 42607, + SPELL_SHAPE_OF_THE_DRAGONHAWK = 42608, + SPELL_BERSERK = 45078 +}; + + +/*##################################################### +# Boss Général Foudrepique Porte Orgrimmar +######################################################*/ + +enum generalfoudrepiqueSpells +{ + ENRAGE = 48138, + FRENZY = 48142, + BONE_SLICE = 69055, //Cleave + CHILLING_WAVE = 68778, //Vague Glaciale + WATER_BLAST_NORMAL = 54237, //Trait d'eau + WATER_BLAST_HERO = 59520, //Trait d'eau + WATER_BOLT_VOLLEY = 59521, //Salve de traits d'eau + SUMMON_WATERELEMENTAL = 100054, + SPELL_ICY_GRIP_JUMP = 70122, // Appelé lors du grip + SPELL_GRIP = 70117, //Grip + SONIC_BURST = 29904, //Chocs sonore + SPELL_CLEAVE = 19983 //Cleave +}; + + + +/*##################################################### +# Trash Vagues Orgrimmar EntréeBaseWaves ARCHER_ARGENT +######################################################*/ + +enum spellarcher +{ + MULTISHOT = 40872, + VOLLEY = 38633, + SUMMONED_SNAKE = 29444, + BOLT_VOLLEY = 34780, + BEWITCHING_AURA = 29486, + REJUVENATION = 71142, + ICE_TRAP = 71249, + AURA_ROT = 25818 +}; + + +/*##################################################### +# Trash Vagues Orgrimmar EntréeBaseWaves MAGE_Argent +######################################################*/ + +enum Spellmage +{ + STORM_OF_GRIEF = 55847, + SHADOW_BURST = 34436, + PIERCING_SHADOW = 36698, + SHADOW_FLAME = 22539, + HARVEST_SOUL = 28679, + SHADOW_BOLT = 41957 +}; + +/*##################################################### +# Trash Vagues Orgrimmar EntréeBaseWaves INFANTERIE_Argent +######################################################*/ + +enum spellinfanterie +{ + ENRAGER = 48138, + FRENZI = 48142, + MORTALE_WOUND = 59265, + DECREPIT = 54098, + WORGEN_BIT = 55266 +}; + + +/*######################################################### +# Trash Vagues Orgimmar PortOuestBaseWaves MAGE_FOUDREPIQUE +#########################################################*/ + +enum MagefoudrepiqueSpells +{ + HEALING_WAVE = 51586, + LIGHTNING_BOLT = 59024, + BLOODLUST = 41185, + LIGHTNING_SHIELD = 59025, + SUMMON_AIR_ELEMENTAL = 30418, + LAVA_BURST = 59519, + CHAIN_LIGHTNING = 54531, + FLAME_SHOCK = 43303, + EARTH_SHOCK = 43305, + LIGHTNING_RING = 59848 +}; + +/*################################################################ +# Trash Vagues Orgimmar PortOuestBaseWaves INFANTERIE_FOUDREPIQUE +################################################################*/ + +enum InfanteriefoudrepiqueSpells +{ + RAGE = 48138, + TOURBILLON = 55266, + FRENZ = 48142, + CHAINCRISTAL = 47698, + HURLEMENT = 16838 +}; + +/*################################################################ +# Trash Vagues Orgrimmar PortOuestBaseWaves INGENIEUR_FOUDREPIQUE +################################################################*/ + +enum IngenieurfoudrepiqueSpells +{ + SUMMON_STOLEN_SOUL = 100029, + STOLEN_SOUL = 32346, + STOLEN_SOUL_VISUAL = 32395, + MOONFIRE = 37328, + FIREBALL = 37329, + MIND_FLAY = 37330, + HEMORRHAGE = 37331, + FROSTSHOCK = 37332, + CURSE_OF_AGONY = 37334, + MORTAL_STRIKE = 37335, + FREEZING_TRAP = 37368, + HAMMER_OF_JUSTICE = 37369, + EXPLOSION = 44314, + CRI = 19134, + BOMBES = 46184, + ROCKET = 46187 +}; + + +float OrgrimmarBaseWaves[ENCOUNTER_WAVES_NUMBER][ENCOUNTER_WAVES_MAX_SPAWNS][5]= // gestion du spawn des trash Entrée Hurlevent +{ + { + {ARCHER_ARGENT, 1225.3365f, -4456.7524f, 24.1668f, 1.70f }, + {MAGE_ARGENT, 1227.1671f, -4456.4125f, 24.2319f, 1.70f }, + {INFANTERIE_ARGENT, 1228.3095f, -4456.2001f, 24.2850f, 1.70f }, + {MAGE_ARGENT, 1229.6103f, -4455.9584f, 24.3538f, 1.70f }, + {ARCHER_ARGENT, 1230.9523f, -4455.7094f, 24.4499f, 1.70f }, + {ARCHER_ARGENT, 1226.5943f, -4459.0024f, 24.2356f, 1.70f }, + {MAGE_ARGENT, 1227.8137f, -4458.7460f, 24.2609f, 1.70f }, + {INFANTERIE_ARGENT, 1228.9234f, -4458.5126f, 24.2836f, 1.70f }, + {MAGE_ARGENT, 1230.0195f, -4458.2827f, 24.3269f, 1.70f }, + {ARCHER_ARGENT, 1231.3894f, -4457.9941f, 42.3971f, 1.70f } + }, + { + {ARCHER_ARGENT, 1225.3365f, -4456.7524f, 24.1668f, 1.70f }, + {MAGE_ARGENT, 1227.1671f, -4456.4125f, 24.2319f, 1.70f }, + {INFANTERIE_ARGENT, 1228.3095f, -4456.2001f, 24.2850f, 1.70f }, + {MAGE_ARGENT, 1229.6103f, -4455.9584f, 24.3538f, 1.70f }, + {ARCHER_ARGENT, 1230.9523f, -4455.7094f, 24.4499f, 1.70f }, + {ARCHER_ARGENT, 1226.5943f, -4459.0024f, 24.2356f, 1.70f }, + {MAGE_ARGENT, 1227.8137f, -4458.7460f, 24.2609f, 1.70f }, + {INFANTERIE_ARGENT, 1228.9234f, -4458.5126f, 24.2836f, 1.70f }, + {MAGE_ARGENT, 1230.0195f, -4458.2827f, 24.3269f, 1.70f }, + {ARCHER_ARGENT, 1231.3894f, -4457.9941f, 42.3971f, 1.70f } + }, + { + {ARCHER_ARGENT, 1225.3365f, -4456.7524f, 24.1668f, 1.70f }, + {MAGE_ARGENT, 1227.1671f, -4456.4125f, 24.2319f, 1.70f }, + {INFANTERIE_ARGENT, 1228.3095f, -4456.2001f, 24.2850f, 1.70f }, + {MAGE_ARGENT, 1229.6103f, -4455.9584f, 24.3538f, 1.70f }, + {ARCHER_ARGENT, 1230.9523f, -4455.7094f, 24.4499f, 1.70f }, + {ARCHER_ARGENT, 1226.5943f, -4459.0024f, 24.2356f, 1.70f }, + {MAGE_ARGENT, 1227.8137f, -4458.7460f, 24.2609f, 1.70f }, + {INFANTERIE_ARGENT, 1228.9234f, -4458.5126f, 24.2836f, 1.70f }, + {MAGE_ARGENT, 1230.0195f, -4458.2827f, 24.3269f, 1.70f }, + {ARCHER_ARGENT, 1231.3894f, -4457.9941f, 42.3971f, 1.70f } + }, + { + {ARCHER_ARGENT, 1225.3365f, -4456.7524f, 24.1668f, 1.70f }, + {MAGE_ARGENT, 1227.1671f, -4456.4125f, 24.2319f, 1.70f }, + {INFANTERIE_ARGENT, 1228.3095f, -4456.2001f, 24.2850f, 1.70f }, + {MAGE_ARGENT, 1229.6103f, -4455.9584f, 24.3538f, 1.70f }, + {ARCHER_ARGENT, 1230.9523f, -4455.7094f, 24.4499f, 1.70f }, + {ARCHER_ARGENT, 1226.5943f, -4459.0024f, 24.2356f, 1.70f }, + {MAGE_ARGENT, 1227.8137f, -4458.7460f, 24.2609f, 1.70f }, + {INFANTERIE_ARGENT, 1228.9234f, -4458.5126f, 24.2836f, 1.70f }, + {MAGE_ARGENT, 1230.0195f, -4458.2827f, 24.3269f, 1.70f }, + {ARCHER_ARGENT, 1231.3894f, -4457.9941f, 42.3971f, 1.70f } + }, + { + {ARCHER_ARGENT, 1225.3365f, -4456.7524f, 24.1668f, 1.70f }, + {MAGE_ARGENT, 1227.1671f, -4456.4125f, 24.2319f, 1.70f }, + {INFANTERIE_ARGENT, 1228.3095f, -4456.2001f, 24.2850f, 1.70f }, + {MAGE_ARGENT, 1229.6103f, -4455.9584f, 24.3538f, 1.70f }, + {ARCHER_ARGENT, 1230.9523f, -4455.7094f, 24.4499f, 1.70f }, + {ARCHER_ARGENT, 1226.5943f, -4459.0024f, 24.2356f, 1.70f }, + {MAGE_ARGENT, 1227.8137f, -4458.7460f, 24.2609f, 1.70f }, + {INFANTERIE_ARGENT, 1228.9234f, -4458.5126f, 24.2836f, 1.70f }, + {MAGE_ARGENT, 1230.0195f, -4458.2827f, 24.3269f, 1.70f }, + {ARCHER_ARGENT, 1231.3894f, -4457.9941f, 42.3971f, 1.70f } + }, + { + {ARCHER_ARGENT, 1225.3365f, -4456.7524f, 24.1668f, 1.70f }, + {MAGE_ARGENT, 1227.1671f, -4456.4125f, 24.2319f, 1.70f }, + {INFANTERIE_ARGENT, 1228.3095f, -4456.2001f, 24.2850f, 1.70f }, + {MAGE_ARGENT, 1229.6103f, -4455.9584f, 24.3538f, 1.70f }, + {ARCHER_ARGENT, 1230.9523f, -4455.7094f, 24.4499f, 1.70f }, + {ARCHER_ARGENT, 1226.5943f, -4459.0024f, 24.2356f, 1.70f }, + {MAGE_ARGENT, 1227.8137f, -4458.7460f, 24.2609f, 1.70f }, + {INFANTERIE_ARGENT, 1228.9234f, -4458.5126f, 24.2836f, 1.70f }, + {MAGE_ARGENT, 1230.0195f, -4458.2827f, 24.3269f, 1.70f }, + {ARCHER_ARGENT, 1231.3894f, -4457.9941f, 42.3971f, 1.70f } + }, + { + {ARCHER_ARGENT, 1225.3365f, -4456.7524f, 24.1668f, 1.70f }, + {MAGE_ARGENT, 1227.1671f, -4456.4125f, 24.2319f, 1.70f }, + {INFANTERIE_ARGENT, 1228.3095f, -4456.2001f, 24.2850f, 1.70f }, + {MAGE_ARGENT, 1229.6103f, -4455.9584f, 24.3538f, 1.70f }, + {ARCHER_ARGENT, 1230.9523f, -4455.7094f, 24.4499f, 1.70f }, + {ARCHER_ARGENT, 1226.5943f, -4459.0024f, 24.2356f, 1.70f }, + {MAGE_ARGENT, 1227.8137f, -4458.7460f, 24.2609f, 1.70f }, + {INFANTERIE_ARGENT, 1228.9234f, -4458.5126f, 24.2836f, 1.70f }, + {MAGE_ARGENT, 1230.0195f, -4458.2827f, 24.3269f, 1.70f }, + {ARCHER_ARGENT, 1231.3894f, -4457.9941f, 42.3971f, 1.70f } + }, + { + {ARCHER_ARGENT, 1225.3365f, -4456.7524f, 24.1668f, 1.70f }, + {MAGE_ARGENT, 1227.1671f, -4456.4125f, 24.2319f, 1.70f }, + {INFANTERIE_ARGENT, 1228.3095f, -4456.2001f, 24.2850f, 1.70f }, + {MAGE_ARGENT, 1229.6103f, -4455.9584f, 24.3538f, 1.70f }, + {ARCHER_ARGENT, 1230.9523f, -4455.7094f, 24.4499f, 1.70f }, + {ARCHER_ARGENT, 1226.5943f, -4459.0024f, 24.2356f, 1.70f }, + {MAGE_ARGENT, 1227.8137f, -4458.7460f, 24.2609f, 1.70f }, + {INFANTERIE_ARGENT, 1228.9234f, -4458.5126f, 24.2836f, 1.70f }, + {MAGE_ARGENT, 1230.0195f, -4458.2827f, 24.3269f, 1.70f }, + {ARCHER_ARGENT, 1231.3894f, -4457.9941f, 42.3971f, 1.70f } + }, + { + {SHAMAN, 1225.3365f, -4456.7524f, 24.1668f, 1.70f }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 } + } +}; + +float OuestBaseWaves[ENCOUNTER_WAVES_NUMBER][ENCOUNTER_WAVES_MAX_SPAWNS][5]= // gestion du spawn des trash Port de Hurlevent +{ + { + {INGENIEUR_FOUDREPIQUE, 1535.9388f, -3850.1210f, 38.4015f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.8411f, -3851.3984f, 38.2936f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1535.7525f, -3852.5573f, 38.1905f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.6815f, -3853.4855f, 38.1368f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1535.5833f, -3854.7697f, 38.1470f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.2680f, -3854.5925f, 37.9370f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.3486f, -3853.5385f, 37.9009f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1533.4201f, -3852.6032f, 37.9450f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.5002f, -3851.5563f, 37.9931f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.5893f, -3850.3908f, 38.0475f, 6.20f } + }, + { + {INGENIEUR_FOUDREPIQUE, 1535.9388f, -3850.1210f, 38.4015f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.8411f, -3851.3984f, 38.2936f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1535.7525f, -3852.5573f, 38.1905f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.6815f, -3853.4855f, 38.1368f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1535.5833f, -3854.7697f, 38.1470f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.2680f, -3854.5925f, 37.9370f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.3486f, -3853.5385f, 37.9009f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1533.4201f, -3852.6032f, 37.9450f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.5002f, -3851.5563f, 37.9931f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.5893f, -3850.3908f, 38.0475f, 6.20f } + }, + { + {INGENIEUR_FOUDREPIQUE, 1535.9388f, -3850.1210f, 38.4015f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.8411f, -3851.3984f, 38.2936f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1535.7525f, -3852.5573f, 38.1905f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.6815f, -3853.4855f, 38.1368f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1535.5833f, -3854.7697f, 38.1470f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.2680f, -3854.5925f, 37.9370f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.3486f, -3853.5385f, 37.9009f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1533.4201f, -3852.6032f, 37.9450f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.5002f, -3851.5563f, 37.9931f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.5893f, -3850.3908f, 38.0475f, 6.20f } + }, + { + {INGENIEUR_FOUDREPIQUE, 1535.9388f, -3850.1210f, 38.4015f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.8411f, -3851.3984f, 38.2936f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1535.7525f, -3852.5573f, 38.1905f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.6815f, -3853.4855f, 38.1368f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1535.5833f, -3854.7697f, 38.1470f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.2680f, -3854.5925f, 37.9370f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.3486f, -3853.5385f, 37.9009f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1533.4201f, -3852.6032f, 37.9450f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.5002f, -3851.5563f, 37.9931f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.5893f, -3850.3908f, 38.0475f, 6.20f } + }, + { + {INGENIEUR_FOUDREPIQUE, 1535.9388f, -3850.1210f, 38.4015f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.8411f, -3851.3984f, 38.2936f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1535.7525f, -3852.5573f, 38.1905f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.6815f, -3853.4855f, 38.1368f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1535.5833f, -3854.7697f, 38.1470f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.2680f, -3854.5925f, 37.9370f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.3486f, -3853.5385f, 37.9009f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1533.4201f, -3852.6032f, 37.9450f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.5002f, -3851.5563f, 37.9931f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.5893f, -3850.3908f, 38.0475f, 6.20f } + }, + { + {INGENIEUR_FOUDREPIQUE, 1535.9388f, -3850.1210f, 38.4015f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.8411f, -3851.3984f, 38.2936f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1535.7525f, -3852.5573f, 38.1905f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.6815f, -3853.4855f, 38.1368f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1535.5833f, -3854.7697f, 38.1470f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.2680f, -3854.5925f, 37.9370f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.3486f, -3853.5385f, 37.9009f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1533.4201f, -3852.6032f, 37.9450f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.5002f, -3851.5563f, 37.9931f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.5893f, -3850.3908f, 38.0475f, 6.20f } + }, + { + {INGENIEUR_FOUDREPIQUE, 1535.9388f, -3850.1210f, 38.4015f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.8411f, -3851.3984f, 38.2936f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1535.7525f, -3852.5573f, 38.1905f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.6815f, -3853.4855f, 38.1368f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1535.5833f, -3854.7697f, 38.1470f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.2680f, -3854.5925f, 37.9370f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.3486f, -3853.5385f, 37.9009f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1533.4201f, -3852.6032f, 37.9450f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.5002f, -3851.5563f, 37.9931f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.5893f, -3850.3908f, 38.0475f, 6.20f } + }, + { + {INGENIEUR_FOUDREPIQUE, 1535.9388f, -3850.1210f, 38.4015f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.8411f, -3851.3984f, 38.2936f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1535.7525f, -3852.5573f, 38.1905f, 6.20f }, + {MAGE_FOUDREPIQUE, 1535.6815f, -3853.4855f, 38.1368f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1535.5833f, -3854.7697f, 38.1470f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.2680f, -3854.5925f, 37.9370f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.3486f, -3853.5385f, 37.9009f, 6.20f }, + {INFANTERIE_FOUDREPIQUE, 1533.4201f, -3852.6032f, 37.9450f, 6.20f }, + {MAGE_FOUDREPIQUE, 1533.5002f, -3851.5563f, 37.9931f, 6.20f }, + {INGENIEUR_FOUDREPIQUE, 1533.5893f, -3850.3908f, 38.0475f, 6.20f } + }, + { + {GENERAL, 1535.9388f, -3850.1210f, 38.4015f, 6.20f }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 }, + {0, 0, 0, 0, 0 } + } + +}; + + + + diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp index d7ec467..6689867 100644 --- a/src/server/scripts/World/boss_emerald_dragons.cpp +++ b/src/server/scripts/World/boss_emerald_dragons.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/brewfest_event.cpp b/src/server/scripts/World/brewfest_event.cpp index 3f2fb62..4e9c83d 100644 --- a/src/server/scripts/World/brewfest_event.cpp +++ b/src/server/scripts/World/brewfest_event.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/chat_log.cpp b/src/server/scripts/World/chat_log.cpp index bfbd2ea..10e3113 100644 --- a/src/server/scripts/World/chat_log.cpp +++ b/src/server/scripts/World/chat_log.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index c5f95d9..86f5f07 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/guards.cpp b/src/server/scripts/World/guards.cpp index 3600c3d..9e1fa56 100644 --- a/src/server/scripts/World/guards.cpp +++ b/src/server/scripts/World/guards.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/item_resetinstance.cpp b/src/server/scripts/World/item_resetinstance.cpp new file mode 100644 index 0000000..10c2d1a --- /dev/null +++ b/src/server/scripts/World/item_resetinstance.cpp @@ -0,0 +1,64 @@ + + +#include "ScriptPCH.h" +#include "ScriptMgr.h" +#include "Chat.h" +#include "InstanceSaveMgr.h" + +std::string GetTimeStringA(uint64 time) +{ + uint64 days = time / DAY, hours = (time % DAY) / HOUR, minute = (time % HOUR) / MINUTE; + std::ostringstream ss; + if (days) ss << days << "d "; + if (hours) ss << hours << "h "; + ss << minute << "m"; + return ss.str(); +} + + +class Item_reset_instance : public ItemScript +{ + public: + + Item_reset_instance() + : ItemScript("item_reset_instance") + { + } + + bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/) + { + if(!player) + return false; + + uint16 counter = 0; + uint16 MapId = 0; + int8 diff = -1; + for(uint8 i = 0; i < MAX_DIFFICULTY; ++i) + { + Player::BoundInstancesMap &binds = player->GetBoundInstances(Difficulty(i)); + for(Player::BoundInstancesMap::iterator itr = binds.begin(); itr != binds.end();) + { + InstanceSave *save = itr->second.save; + if(itr->first != player->GetMapId() && (!MapId || MapId == itr->first) && (diff == -1 || diff == save->GetDifficulty())) + { + std::string timeleft = GetTimeStringA(save->GetResetTime() - time(NULL)); + sLog->outDetail("unbinding map: %d inst: %d perm: %s diff: %d canReset: %s TTR: %s", itr->first, save->GetInstanceId(), itr->second.perm ? "yes" : "no", save->GetDifficulty(), save->CanReset() ? "yes" : "no", timeleft.c_str()); + player->UnbindInstance(itr, Difficulty(i)); + counter++; + } + else + ++itr; + } + } + + sLog->outDetail("instances unbound: %d", counter); + if(counter) + player->DestroyItemCount(item->GetEntry(),1,true); + return true; + } +}; + +void AddSC_Item_reset_instance() +{ + new Item_reset_instance(); +} \ No newline at end of file diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp index b27f80b..9eb1891 100644 --- a/src/server/scripts/World/item_scripts.cpp +++ b/src/server/scripts/World/item_scripts.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/mob_generic_creature.cpp b/src/server/scripts/World/mob_generic_creature.cpp index 954e687..da9b0e9 100644 --- a/src/server/scripts/World/mob_generic_creature.cpp +++ b/src/server/scripts/World/mob_generic_creature.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/morph_system.cpp b/src/server/scripts/World/morph_system.cpp new file mode 100644 index 0000000..57877cf --- /dev/null +++ b/src/server/scripts/World/morph_system.cpp @@ -0,0 +1,140 @@ +#include "ScriptPCH.h" + +class morpher : public CreatureScript +{ +public: + morpher() : CreatureScript("morpher") {} + + bool OnGossipHello(Player* player, Creature* creature) + { + player->ADD_GOSSIP_ITEM( 5, "Je voudrai changer ma race en Murloc." , GOSSIP_SENDER_MAIN, 1); + player->ADD_GOSSIP_ITEM( 5, "Je voudrai changer ma race en Banshee." , GOSSIP_SENDER_MAIN, 2); + player->ADD_GOSSIP_ITEM( 5, "Je voudrai changer ma race en Troll de la Mort." , GOSSIP_SENDER_MAIN, 3); + player->ADD_GOSSIP_ITEM( 5, "Je voudrai changer ma race en Worgen." , GOSSIP_SENDER_MAIN, 4); + player->ADD_GOSSIP_ITEM( 5, "Je voudrai changer ma race en Goblin." , GOSSIP_SENDER_MAIN, 5); + player->ADD_GOSSIP_ITEM( 5, "Je voudrai changer ma race en Chevalier dechu." , GOSSIP_SENDER_MAIN, 6); + player->ADD_GOSSIP_ITEM( 5, "Je voudrai revenir a ma race d'origine." , GOSSIP_SENDER_MAIN, 7); + player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,creature->GetGUID()); + return true; + } + void MorphChange(Player* player, uint32 modelid) + { + QueryResult result = CharacterDatabase.PQuery("SELECT * FROM character_morph WHERE guid = %u", player->GetGUID()); + if (result) + { + CharacterDatabase.PExecute("UPDATE character_morph SET morph = %u WHERE guid = %u",modelid,player->GetGUID()); + } + else + { + CharacterDatabase.PExecute("INSERT INTO character_morph VALUES (%u,%u)",player->GetGUID(),modelid); + } + player->SetDisplayId(modelid); + } + void SendDefaultMenu(Player *player, Creature *creature, uint32 action) + { + switch (action) + { + case 1: + if (player->GetItemCount(44990) >= 25) + { + player->DestroyItemCount(44990, 25, true); + MorphChange(player,652); + creature->MonsterWhisper("Votre race a bien ete modifie",player->GetGUID()); + } + else + creature->MonsterWhisper("Il vous faut 25 sceaux de champion pour changer de race.",player->GetGUID()); + player->CLOSE_GOSSIP_MENU(); + break; + case 2: + if (player->GetItemCount(44990) >= 25) + { + player->DestroyItemCount(44990, 25, true); + MorphChange(player,915); + creature->MonsterWhisper("Votre race a bien ete modifie",player->GetGUID()); + } + else + creature->MonsterWhisper("Il vous faut 25 sceaux de champion pour changer de race.",player->GetGUID()); + player->CLOSE_GOSSIP_MENU(); + break; + case 3: + if (player->GetItemCount(44990) >= 25) + { + player->DestroyItemCount(44990, 25, true); + MorphChange(player,26923); + creature->MonsterWhisper("Votre race a bien ete modifie",player->GetGUID()); + } + else + creature->MonsterWhisper("Il vous faut 25 sceaux de champion pour changer de race.",player->GetGUID()); + player->CLOSE_GOSSIP_MENU(); + break; + case 4: + if (player->GetItemCount(44990) >= 25) + { + player->DestroyItemCount(44990, 25, true); + MorphChange(player,657); + creature->MonsterWhisper("Votre race a bien ete modifie",player->GetGUID()); + } + else + creature->MonsterWhisper("Il vous faut 25 sceaux de champion pour changer de race.",player->GetGUID()); + player->CLOSE_GOSSIP_MENU(); + break; + case 5: + if (player->GetItemCount(44990) >= 25) + { + player->DestroyItemCount(44990, 25, true); + MorphChange(player,7191); + creature->MonsterWhisper("Votre race a bien ete modifie",player->GetGUID()); + } + else + creature->MonsterWhisper("Il vous faut 25 sceaux de champion pour changer de race.",player->GetGUID()); + player->CLOSE_GOSSIP_MENU(); + break; + case 6: + if (player->GetItemCount(44990) >= 25) + { + player->DestroyItemCount(44990, 25, true); + MorphChange(player,27153); + creature->MonsterWhisper("Votre race a bien ete modifie",player->GetGUID()); + } + else + creature->MonsterWhisper("Il vous faut 25 sceaux de champion pour changer de race.",player->GetGUID()); + player->CLOSE_GOSSIP_MENU(); + break; + case 7: + //player->DeMorphReset(); + player->CLOSE_GOSSIP_MENU(); + break; + } + } + bool OnGossipSelect(Player *player, Creature *creature, uint32 sender, uint32 action ) + { + // Main menu + if (sender == GOSSIP_SENDER_MAIN) + SendDefaultMenu(player, creature, action); + + return true; + + } +}; + +class morphscript : public PlayerScript +{ +public: + morphscript() : PlayerScript("morphscript") { } + + Field* fields; + + void OnPlayerLogin(Player* pPlayer) + { + QueryResult result = CharacterDatabase.PQuery("SELECT morph FROM character_morph WHERE guid=%u", pPlayer->GetGUID()); + fields = result->Fetch(); + if (result->Fetch()) + pPlayer->SetDisplayId(fields[0].GetUInt32()); + } +}; + +void AddSC_Reset_Morph() +{ + new morpher; + new morphscript(); +} diff --git a/src/server/scripts/World/npc_beastmaster.cpp b/src/server/scripts/World/npc_beastmaster.cpp new file mode 100644 index 0000000..65989d4 --- /dev/null +++ b/src/server/scripts/World/npc_beastmaster.cpp @@ -0,0 +1,268 @@ +#include "ScriptPCH.h" + +#define GOSSIP_ITEM_STABLE "Stable" +#define GOSSIP_ITEM_NEWPET "New Pet" +#define GOSSIP_ITEM_BOAR "Boar" +#define GOSSIP_ITEM_SERPENT "Serpent" +#define GOSSIP_ITEM_SCRAB "Scrab" +#define GOSSIP_ITEM_LION "Lion" +#define GOSSIP_ITEM_WOLF "Wolf" +#define GOSSIP_ITEM_RAVAGER "Ravenger" + +#define GOSSIP_ITEM_UNTRAINEPET "Restart Pet" + +class Npc_Beastmaster : public CreatureScript +{ +public: + Npc_Beastmaster() : CreatureScript("Npc_Beastmaster") { } + +void CreatePet(Player *player, Creature * m_creature, uint32 entry) { + + if(player->getClass() != CLASS_HUNTER) { + m_creature->MonsterWhisper("Vous n'êtes pas Chasseur!", player->GetGUID()); + player->PlayerTalkClass->SendCloseGossip(); + return; + } + + if(player->GetPet()) { + m_creature->MonsterWhisper("Vous devez Abandonner votre Famillié avant!", player->GetGUID()); + player->PlayerTalkClass->SendCloseGossip(); + return; + } + + Creature *creatureTarget = m_creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY()+2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500); + if(!creatureTarget) return; + + Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0); + if(!pet) return; + + // kill original creature + creatureTarget->setDeathState(JUST_DIED); + creatureTarget->RemoveCorpse(); + creatureTarget->SetHealth(0); // just for nice GM-mode view + + pet->SetPower(POWER_HAPPINESS, 1048000); + + //pet->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE,0); + //pet->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32((Trinity::XP::xp_to_level(70))/4)); + + // prepare visual effect for levelup + pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel() - 1); + pet->GetMap()->Add((Creature*)pet); + // visual effect for levelup + pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel()); + + + if(!pet->InitStatsForLevel(player->getLevel())) + sLog->outError ("Pet Create fail: no init stats for entry %u", entry); + + pet->UpdateAllStats(); + + // caster have pet now + player->SetMinion(pet, true); + + pet->SavePetToDB(PET_SAVE_AS_CURRENT); + pet->InitTalentForLevel(); + player->PetSpellInitialize(); + + //end + player->PlayerTalkClass->SendCloseGossip(); + m_creature->MonsterWhisper("Famillié Ajouté. Pensez à le nourrir et à le renomer si vous le souhaitez.", player->GetGUID()); + } + + + bool OnGossipHello(Player *player, Creature * m_creature) + { + + if(player->getClass() != CLASS_HUNTER) + { + m_creature->MonsterWhisper("Vous n'êtes pas Chasseur!", player->GetGUID()); + return true; + } + player->ADD_GOSSIP_ITEM(4, "Prendre un Nouveau Famillié.", GOSSIP_SENDER_MAIN, 30); + if (player->CanTameExoticPets()) + { + player->ADD_GOSSIP_ITEM(4, "Prendre un Nouveau Famillié Exotique.", GOSSIP_SENDER_MAIN, 50); + } + player->ADD_GOSSIP_ITEM(2, "Acheter un Emplacement à l'écurie.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET); + player->ADD_GOSSIP_ITEM(6, "Me Vendre de la nourriture pour Famillié.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR); + player->ADD_GOSSIP_ITEM(5, "Fermer.", GOSSIP_SENDER_MAIN, 150); + player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); + return true; + } + + bool OnGossipSelect(Player *player, Creature * m_creature, uint32 sender, uint32 action) + { + player->PlayerTalkClass->ClearMenus(); + switch (action) + { + + case 100: + player->ADD_GOSSIP_ITEM(4, "Prendre un Nouveau Famillié.", GOSSIP_SENDER_MAIN, 30); + if (player->CanTameExoticPets()) + { + player->ADD_GOSSIP_ITEM(4, "Prendre un Nouveau Famillié Exotique.", GOSSIP_SENDER_MAIN, 50); + } + player->ADD_GOSSIP_ITEM(2, "Acheter un Emplacement à l'écurie.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET); + player->ADD_GOSSIP_ITEM(6, "Me Vendre de la nourriture pour Famillié.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR); + player->ADD_GOSSIP_ITEM(5, "Fermer.", GOSSIP_SENDER_MAIN, 150); + player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); + break; + + case 150: + player->CLOSE_GOSSIP_MENU(); + break; + + case 30: + player->ADD_GOSSIP_ITEM(2, "<- Menu Général.", GOSSIP_SENDER_MAIN, 100); + player->ADD_GOSSIP_ITEM(4, "Page Suivante. ->", GOSSIP_SENDER_MAIN, 31); + player->ADD_GOSSIP_ITEM(6, "Chauve-souris.", GOSSIP_SENDER_MAIN, 18); + player->ADD_GOSSIP_ITEM(6, "Ours.", GOSSIP_SENDER_MAIN, 1); + player->ADD_GOSSIP_ITEM(6, "Sanglier.", GOSSIP_SENDER_MAIN, 2); + player->ADD_GOSSIP_ITEM(6, "Félin.", GOSSIP_SENDER_MAIN, 4); + player->ADD_GOSSIP_ITEM(6, "Charognard.", GOSSIP_SENDER_MAIN, 5); + player->ADD_GOSSIP_ITEM(6, "Crabe.", GOSSIP_SENDER_MAIN, 6); + player->ADD_GOSSIP_ITEM(6, "Crocilisque.", GOSSIP_SENDER_MAIN, 7); + player->ADD_GOSSIP_ITEM(6, "Faucon-dragon.", GOSSIP_SENDER_MAIN, 17); + player->ADD_GOSSIP_ITEM(6, "Gorille.", GOSSIP_SENDER_MAIN, 8); + player->ADD_GOSSIP_ITEM(6, "Chien du Magma.", GOSSIP_SENDER_MAIN, 9); + player->ADD_GOSSIP_ITEM(6, "Hyène.", GOSSIP_SENDER_MAIN, 10); + player->ADD_GOSSIP_ITEM(6, "Phalène.", GOSSIP_SENDER_MAIN, 11); + player->ADD_GOSSIP_ITEM(6, "Chouette.", GOSSIP_SENDER_MAIN, 12); + player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); + break; + + case 31: + player->ADD_GOSSIP_ITEM(2, "<- Menu Général.", GOSSIP_SENDER_MAIN, 30); + player->ADD_GOSSIP_ITEM(4, "<- Page Précedente.", GOSSIP_SENDER_MAIN, 30); + player->ADD_GOSSIP_ITEM(6, "Raptor.", GOSSIP_SENDER_MAIN, 20); + player->ADD_GOSSIP_ITEM(6, "Ravageur.", GOSSIP_SENDER_MAIN, 19); + player->ADD_GOSSIP_ITEM(6, "Matriarche.", GOSSIP_SENDER_MAIN, 13); + player->ADD_GOSSIP_ITEM(6, "Scorpide.", GOSSIP_SENDER_MAIN, 414); + player->ADD_GOSSIP_ITEM(6, "Araigné.", GOSSIP_SENDER_MAIN, 16); + player->ADD_GOSSIP_ITEM(6, "Serpent.", GOSSIP_SENDER_MAIN, 21); + player->ADD_GOSSIP_ITEM(6, "Tortue.", GOSSIP_SENDER_MAIN, 15); + player->ADD_GOSSIP_ITEM(6, "Guêpe.", GOSSIP_SENDER_MAIN, 93); + player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); + break; + + case 50: + player->ADD_GOSSIP_ITEM(2, "<- Menu Général.", GOSSIP_SENDER_MAIN, 100); + player->ADD_GOSSIP_ITEM(2, "<- Prendre un Nouveau Famillié.", GOSSIP_SENDER_MAIN, 100); + player->ADD_GOSSIP_ITEM(6, "Chimère.", GOSSIP_SENDER_MAIN, 51); + player->ADD_GOSSIP_ITEM(6, "Chien du Magma.", GOSSIP_SENDER_MAIN, 52); + player->ADD_GOSSIP_ITEM(6, "Diablosaure.", GOSSIP_SENDER_MAIN, 53); + player->ADD_GOSSIP_ITEM(6, "Rhino.", GOSSIP_SENDER_MAIN, 54); + player->ADD_GOSSIP_ITEM(6, "Silithide.", GOSSIP_SENDER_MAIN, 55); + player->ADD_GOSSIP_ITEM(6, "Ver.", GOSSIP_SENDER_MAIN, 56); + player->ADD_GOSSIP_ITEM(6, "Loque'nahak.", GOSSIP_SENDER_MAIN, 57); + player->ADD_GOSSIP_ITEM(6, "Skoll.", GOSSIP_SENDER_MAIN, 58); + player->ADD_GOSSIP_ITEM(6, "Gondria.", GOSSIP_SENDER_MAIN, 59); + player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); + break; + + case GOSSIP_OPTION_STABLEPET: + player->GetSession()->SendStablePet(m_creature->GetGUID()); + break; + case GOSSIP_OPTION_VENDOR: + player->CLOSE_GOSSIP_MENU(); + break; + case 51: //chimera + CreatePet(player, m_creature, 21879); + break; + case 52: //core hound + CreatePet(player, m_creature, 21108); + break; + case 53: //Devilsaur + CreatePet(player, m_creature, 20931); + break; + case 54: //rhino + CreatePet(player, m_creature, 30445); + break; + case 55: //silithid + CreatePet(player, m_creature, 5460); + break; + case 56: //Worm + CreatePet(player, m_creature, 30148); + break; + case 57: //Loque'nahak + CreatePet(player, m_creature, 32517); + break; + case 58: //Skoll + CreatePet(player, m_creature, 35189); + break; + case 59: //Gondria + CreatePet(player, m_creature, 33776); + break; + case 16: //Spider + CreatePet(player, m_creature, 2349); + break; + case 17: //Dragonhawk + CreatePet(player, m_creature, 27946); + break; + case 18: //Bat + CreatePet(player, m_creature, 28233); + break; + case 19: //Ravager + CreatePet(player, m_creature, 17199); + break; + case 20: //Raptor + CreatePet(player, m_creature, 14821); + break; + case 21: //Serpent + CreatePet(player, m_creature, 28358); + break; + case 1: //bear + CreatePet(player, m_creature, 29319); + break; + case 2: //Boar + CreatePet(player, m_creature, 29996); + break; + case 93: //Bug + CreatePet(player, m_creature, 28085); + break; + case 4: //cat + CreatePet(player, m_creature, 28097); + break; + case 5: //carrion + CreatePet(player, m_creature, 26838); + break; + case 6: //crab + CreatePet(player, m_creature, 24478); + break; + case 7: //crocolisk + CreatePet(player, m_creature, 1417); + break; + case 8: //gorila + CreatePet(player, m_creature, 28213); + break; + case 9: //hound + CreatePet(player, m_creature, 29452); + break; + case 10: //hynea + CreatePet(player, m_creature, 13036); + break; + case 11: //Moth + CreatePet(player, m_creature, 27421); + break; + case 12: //owl + CreatePet(player, m_creature, 23136); + break; + case 13: //strider + CreatePet(player, m_creature, 22807); + break; + case 414: //scorpid + CreatePet(player, m_creature, 9698); + break; + case 15: //turtle + CreatePet(player, m_creature, 25482); + break; + } + return true; + } +}; + +void AddSC_npc_beastmaster() +{ + new Npc_Beastmaster; +} diff --git a/src/server/scripts/World/npc_boutique.cpp b/src/server/scripts/World/npc_boutique.cpp new file mode 100644 index 0000000..7c14154 --- /dev/null +++ b/src/server/scripts/World/npc_boutique.cpp @@ -0,0 +1,163 @@ +#include "ScriptPCH.h" + +/******************************************************* + * /********* Add Custom ADDR ***************/ + /*******************************************************/ + +#define ALLONULL "Vous n'avez pas assez de point de votes." +#define ALLOTRUE "Vous avez reçu %u sceaux de champion". +#define TRANS_FAIL "Echec de la transaction, veuillez contacter un administrateur pour régler votre problème" + +#define sc_champ 44990 + +class npc_shop : public CreatureScript +{ +public: + npc_shop() : CreatureScript("npc_shop") { } + + bool OnGossipHello(Player* pPlayer, Creature* pCreature) + { + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 10 > votes contre < 1 > Sceau de Champion" , GOSSIP_SENDER_MAIN, 2); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 20 > votes contre < 2 > Sceaux de Champion" , GOSSIP_SENDER_MAIN, 3); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 50 > votes contre < 5 > Sceaux de Champion" , GOSSIP_SENDER_MAIN, 4); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 100 > votes contre < 10 > Sceaux de Champion" , GOSSIP_SENDER_MAIN, 5); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 200 > votes contre < 20 > Sceaux de Champion" , GOSSIP_SENDER_MAIN, 6); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 300 > votes contre < 30 > Sceaux de Champion" , GOSSIP_SENDER_MAIN, 7); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 400 > votes contre < 40 > Sceaux de Champion" , GOSSIP_SENDER_MAIN, 8); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 500 > votes contre < 50 > Sceaux de Champion" , GOSSIP_SENDER_MAIN, 9); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 1500 > votes contre < 150 > Sceaux de Champion" , GOSSIP_SENDER_MAIN, 10); + pPlayer->ADD_GOSSIP_ITEM(6, "Quitter", GOSSIP_SENDER_MAIN, 11); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID()); + return true; + } + + void AddRewardToPlr(uint32 cnt, Player* pPlayer, Creature* pCreature, uint32 pointbefore) + { + char msg[255]; + pPlayer->AddItem(sc_champ,cnt); + uint32 pointafter = pointbefore -(cnt*10); + LoginDatabase.PExecute("UPDATE `vote_points` SET `vote_points` = %u WHERE `user_id` = %u", pointafter, pPlayer->GetSession()->GetAccountId()); + sprintf(msg,"Vous avez reçu %u sceaux de champion", cnt); + pCreature->MonsterWhisper(msg, pPlayer->GetGUID()); + pPlayer->SaveToDB(); + } + + void ShowErrorDueToTrans(Player* pPlayer, Creature* pCreature, const char* error_val) + { + pCreature->MonsterWhisper(error_val, pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + + void SendDefaultMenu(Player* pPlayer, Creature *pCreature, uint32 action ) + { + QueryResult result; + + uint32 count = 0; + + result = LoginDatabase.PQuery("SELECT `vote_points` FROM `vote_points` WHERE `user_id` = %u", pPlayer->GetSession()->GetAccountId()); + + if (result) + { + Field *fields = result->Fetch(); + count = fields[0].GetUInt32(); + if (count < 10) + { + ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + return; + } + } + else + { + ShowErrorDueToTrans(pPlayer, pCreature, TRANS_FAIL); + return; + } + + switch(action) + { + + case 2: // 10 + { + if(count < 10) ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + else AddRewardToPlr(1, pPlayer, pCreature,count); + } + break; + + case 3: // 20 + { + if(count < 20) ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + else AddRewardToPlr(2, pPlayer, pCreature,count); + } + break; + + case 4: // 50 + { + if(count < 50) ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + else AddRewardToPlr(5, pPlayer, pCreature,count); + } + break; + + case 5: // 100 + { + if(count < 100) ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + else AddRewardToPlr(10, pPlayer, pCreature,count); + } + break; + + case 6: // 200 + { + if(count < 200) ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + else AddRewardToPlr(20, pPlayer, pCreature,count); + } + break; + + case 7: // 300 + { + if(count < 300) ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + else AddRewardToPlr(30, pPlayer, pCreature,count); + } + break; + + case 8: // 400 + { + if(count < 400) ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + else AddRewardToPlr(40, pPlayer, pCreature,count); + } + break; + + case 9: // 500 + { + if(count < 500) ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + else AddRewardToPlr(50, pPlayer, pCreature,count); + } + break; + + case 10: // 1500 + { + if(count < 1500) ShowErrorDueToTrans(pPlayer, pCreature, ALLONULL); + else AddRewardToPlr(150, pPlayer, pCreature,count); + } + break; + + case 11: // Quit :) + { + pPlayer->CLOSE_GOSSIP_MENU(); + } + break; + } + } + + bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action ) + { + if (sender == GOSSIP_SENDER_MAIN) + { + SendDefaultMenu(pPlayer, pCreature, action ); + pPlayer->CLOSE_GOSSIP_MENU(); + } + return true; + } +}; + +void AddSC_npc_shop() +{ + new npc_shop(); +} \ No newline at end of file diff --git a/src/server/scripts/World/npc_buff.cpp b/src/server/scripts/World/npc_buff.cpp new file mode 100644 index 0000000..5b73dcc --- /dev/null +++ b/src/server/scripts/World/npc_buff.cpp @@ -0,0 +1,494 @@ +/* Copyright (C) 2006 - 2009 ScriptDev2 + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* ScriptData +SDName: buffnpc +SD%Complete: 100 +SDComment: Buff Master +SDCategory: NPC +EndScriptData */ + +#include "ScriptPCH.h" +#include "Configuration/Config.h" + + +class buffnpc : public CreatureScript +{ +public: + buffnpc() : CreatureScript("buffnpc") { } + + bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) + { + pPlayer->PlayerTalkClass->ClearMenus(); + // Main menu + if (uiSender == GOSSIP_SENDER_MAIN) + SendDefaultMenu_BuffNPC(pPlayer, pCreature, uiAction); + + return true; + } + + bool OnGossipHello(Player* pPlayer, Creature* pCreature) + { + + + if(sConfig->GetBoolDefault("BuffNPC.OnlyGMs", false)) // If BuffNPC.OnlyGMs is enabled in trinitycore.conf + if (pPlayer->GetSession()->GetSecurity() == SEC_PLAYER) + { + pCreature->MonsterWhisper("Désolé, je ne peux que buff les maitres du jeu.", pPlayer->GetGUID()); + return true; + } + + bool EnableSmallBuff = sConfig->GetBoolDefault("BuffNPC.EnableSmallBuff", true); + bool EnableGreatBuff = sConfig->GetBoolDefault("BuffNPC.EnableGreatBuff", true); + bool EnableGMBuff = sConfig->GetBoolDefault("BuffNPC.EnableGMBuff", true); + bool EnablePlayerTools = sConfig->GetBoolDefault("BuffNPC.EnablePlayerTools", true); + bool EnableResSickness = sConfig->GetBoolDefault("BuffNPC.EnableRemoveResSickness", true); + bool EnableGivemeGold = sConfig->GetBoolDefault("BuffNPC.EnableGivemeGold", false); + + // Main Menu for Alliance + if (pPlayer->GetTeam() == ALLIANCE) + { + // Check config if "Small Buff " is enabled or not + if(EnableSmallBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff inférieure ->" , GOSSIP_SENDER_MAIN, 1000); + // Check config if "Great Buff" is enabled or not + if(EnableGreatBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff supérieure ->" , GOSSIP_SENDER_MAIN, 2000); + // Check config if "GM Buff" is enabled or not + if(EnableGMBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff MJ ->" , GOSSIP_SENDER_MAIN, 3000); + // Check config if "Player Tools" is enabled or not + if(EnablePlayerTools) + pPlayer->ADD_GOSSIP_ITEM( 7, "items spéciaux ->" , GOSSIP_SENDER_MAIN, 4000); + } + else // Main Menu for Horde + { + // Check config if "Small Buff " is enabled or not + if(EnableSmallBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff supérieure ->" , GOSSIP_SENDER_MAIN, 1000); + // Check config if "Great Buff" is enabled or not + if(EnableGreatBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff inférieure ->" , GOSSIP_SENDER_MAIN, 2000); + // Check config if "GM Buff" is enabled or not + if(EnableGMBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff MJ ->" , GOSSIP_SENDER_MAIN, 3000); + // Check config if "Player Tools" is enabled or not + if(EnablePlayerTools) + pPlayer->ADD_GOSSIP_ITEM( 7, "Items spéciaux ->" , GOSSIP_SENDER_MAIN, 4000); + } + + // Check config file if "Remove res sickness" option is enabled or not + if(EnableResSickness) + pPlayer->ADD_GOSSIP_ITEM( 10, "Suprimmer le mal de REZ" , GOSSIP_SENDER_MAIN, 5000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); + + return true; + } + +void SendDefaultMenu_BuffNPC(Player* pPlayer, Creature* pCreature, uint32 uiAction) +{ + + + +// Not allow in combat +if (pPlayer->isInCombat()) +{ + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->MonsterSay("Vous êtes en combat !", LANG_UNIVERSAL, NULL); + return; +} + + + bool EnableSmallBuff = sConfig->GetBoolDefault("BuffNPC.EnableSmallBuff", true); + bool EnableGreatBuff = sConfig->GetBoolDefault("BuffNPC.EnableGreatBuff", true); + bool EnableGMBuff = sConfig->GetBoolDefault("BuffNPC.EnableGMBuff", true); + bool EnablePlayerTools = sConfig->GetBoolDefault("BuffNPC.EnablePlayerTools", true); + bool EnableResSickness = sConfig->GetBoolDefault("BuffNPC.EnableRemoveResSickness", true); + bool EnableGivemeGold = sConfig->GetBoolDefault("BuffNPC.EnableGivemeGold", false); + +//Mony Check +if (pPlayer->GetMoney() < (sConfig->GetFloatDefault("BuffGoldCost",0))) +{ + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->MonsterWhisper("Vous n'avez pas l'argent nécéssaire.", pPlayer->GetGUID()); + return; +} + +switch(uiAction) +{ + +case 1000: //Small Buff + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Marque du fauve" , GOSSIP_SENDER_MAIN, 1001); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Epines" , GOSSIP_SENDER_MAIN, 1005); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Amplification de la magie" , GOSSIP_SENDER_MAIN, 1010); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Intélligence des arcanes" , GOSSIP_SENDER_MAIN, 1015); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Intélligence de Dalaran" , GOSSIP_SENDER_MAIN, 1020); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Atténuation de la magie" , GOSSIP_SENDER_MAIN, 1025); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Bénédiction des rois" , GOSSIP_SENDER_MAIN, 1030); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Bénédiction de puissance" , GOSSIP_SENDER_MAIN, 1035); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Bénédiction de sagesse" , GOSSIP_SENDER_MAIN, 1040); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi L'esprit divin" , GOSSIP_SENDER_MAIN, 1045); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi mot de pouvoir: Robustesse" , GOSSIP_SENDER_MAIN, 1050); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Protection contre l'ombre" , GOSSIP_SENDER_MAIN, 1055); + pPlayer->ADD_GOSSIP_ITEM( 7, "<- Menu principal" , GOSSIP_SENDER_MAIN, 5005); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 2000: //Great Buff + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Don du fauve" , GOSSIP_SENDER_MAIN, 2001); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Illumination des arcanes" , GOSSIP_SENDER_MAIN, 2005); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Illumination de Dalaran" , GOSSIP_SENDER_MAIN, 2010); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Bénédiction des rois supérieure" , GOSSIP_SENDER_MAIN, 2015); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Bénédiction de puissance supérieure" , GOSSIP_SENDER_MAIN, 2020); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Bénédiction de sanctuaire supérieure" , GOSSIP_SENDER_MAIN, 2025); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Bénédiction de sagesse supérieure" , GOSSIP_SENDER_MAIN, 2030); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Prière de robustesse" , GOSSIP_SENDER_MAIN, 2035); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Prière de protection contre l'ombre" , GOSSIP_SENDER_MAIN, 2040); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff-moi Prière d'esprit" , GOSSIP_SENDER_MAIN, 2045); + pPlayer->ADD_GOSSIP_ITEM( 7, "<- Menu principal" , GOSSIP_SENDER_MAIN, 5005); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 3000: //GM Buff + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff me Agamaggan's Agility" , GOSSIP_SENDER_MAIN, 3001); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff me Agamaggan's Strength" , GOSSIP_SENDER_MAIN, 3005); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff me Armor Magic" , GOSSIP_SENDER_MAIN, 3010); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff me Armor Penetration" , GOSSIP_SENDER_MAIN, 3015); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff me Increased Stamina" , GOSSIP_SENDER_MAIN, 3020); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff me Razorhide" , GOSSIP_SENDER_MAIN, 3025); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff me Rising Spirit" , GOSSIP_SENDER_MAIN, 3030); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff me Spirit of the Wind" , GOSSIP_SENDER_MAIN, 3035); + pPlayer->ADD_GOSSIP_ITEM( 5, "Buff me Wisdom of Agamaggan" , GOSSIP_SENDER_MAIN, 3040); + pPlayer->ADD_GOSSIP_ITEM( 7, "<- Menu principal" , GOSSIP_SENDER_MAIN, 5005); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 4000: //Player Tools + // Check config if "Give me Gold" is enabled or not + if(EnableGivemeGold) + pPlayer->ADD_GOSSIP_ITEM( 5, "Donnez moi de l'or" , GOSSIP_SENDER_MAIN, 4001); + pPlayer->ADD_GOSSIP_ITEM( 5, "Donnez moi des fraguement d'âme" , GOSSIP_SENDER_MAIN, 4005); + pPlayer->ADD_GOSSIP_ITEM( 5, "Heal-moi s'il te plait" , GOSSIP_SENDER_MAIN, 4010); + pPlayer->ADD_GOSSIP_ITEM( 5, "Heal les membres de mon raid" , GOSSIP_SENDER_MAIN, 4015); + pPlayer->ADD_GOSSIP_ITEM( 5, "Invoquer moi des rafraichissement" , GOSSIP_SENDER_MAIN, 4020); + pPlayer->ADD_GOSSIP_ITEM( 5, "Invoquer moi une gêmme de mana" , GOSSIP_SENDER_MAIN, 4025); + pPlayer->ADD_GOSSIP_ITEM( 7, "<- Menu principal" , GOSSIP_SENDER_MAIN, 5005); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 5005: //Back To Main Menu + // Main Menu for Alliance + if (pPlayer->GetTeam() == ALLIANCE) + { + // Check config if "Small Buff " is enabled or not + if(EnableSmallBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff inférieure ->" , GOSSIP_SENDER_MAIN, 1000); + // Check config if "Great Buff" is enabled or not + if(EnableGreatBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff supérieure ->" , GOSSIP_SENDER_MAIN, 2000); + // Check config if "GM Buff" is enabled or not + if(EnableGMBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff MJ ->" , GOSSIP_SENDER_MAIN, 3000); + // Check config if "Player Tools" is enabled or not + if(EnablePlayerTools) + pPlayer->ADD_GOSSIP_ITEM( 7, "Items spéciaux ->" , GOSSIP_SENDER_MAIN, 4000); + } + else // Main Menu for Horde + { + // Check config if "Small Buff " is enabled or not + if(EnableSmallBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff inférieure ->" , GOSSIP_SENDER_MAIN, 1000); + // Check config if "Great Buff" is enabled or not + if(EnableGreatBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff supérieure ->" , GOSSIP_SENDER_MAIN, 2000); + // Check config if "GM Buff" is enabled or not + if(EnableGMBuff) + pPlayer->ADD_GOSSIP_ITEM( 7, "Buff MJ ->" , GOSSIP_SENDER_MAIN, 3000); + // Check config if "Player Tools" is enabled or not + if(EnablePlayerTools) + pPlayer->ADD_GOSSIP_ITEM( 7, "Items spéciaux ->" , GOSSIP_SENDER_MAIN, 4000); + } + + // Check if Ress Sickness option is enabled in scriptdev2.conf + if(EnableResSickness) + pPlayer->ADD_GOSSIP_ITEM( 10, "Suprimmer le mal de REZ" , GOSSIP_SENDER_MAIN, 5000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +//////////////////////////////////////////////////Small Buff/////////////////////////////////////////////////////////////// + +case 1001: // Buff me Mark of the Wild + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,48469,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1005: // Buff me Thorns + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,53307,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1010: // Buff me Amplify Magic + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,43017,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1015: // Buff me Arcane Intellect + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,42995,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1020: // Buff me Dalaran Intellect + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,61024,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1025: // Buff me Dampen Magic + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,43015,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1030: // Buff me Blessing of Kings + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,20217,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1035: // Buff me Blessing of Might + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,48932,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1040: // Buff me Blessing of Wisdom + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,48936,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1045: // Buff me Divine Spirit + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,48073,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1050: // Buff me Power Word: Fortitude + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,48161,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 1055: // Buff me Shadow Protection + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,48169,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +//////////////////////////////////////////////////Great Buff/////////////////////////////////////////////////////////////// + +case 2001: // Buff me Gift of the Wild + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,48470,true); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 2005: // Buff me Arcane Brilliance + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,43002,true); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 2010: // Buff me Dalaran Brilliance + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,61316,true); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 2015: // Buff me Greater Blessing of Kings + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,25898,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 2020: // Buff me Greater Blessing of Might + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,48934,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 2025: // Buff me Greater Blessing of Sanctuary + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,25899,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 2030: // Buff me Greater Blessing of Wisdom + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,48938,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 2035: // Buff me Prayer of Fortitude + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,48162,true); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 2040: // Buff me Prayer of Shadow Protection + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,48170,true); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 2045: // Buff me Prayer of Spirit + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,48074,true); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +//////////////////////////////////////////////////GM Buff/////////////////////////////////////////////////////////////// + +case 3001: // Buff me Agamaggan's Agility + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,17013,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 3005: // Buff me Agamaggan's Strength + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,16612,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 3010: // Buff me Armor Magic + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,58453,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 3015: // Buff me Armor Penetration + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,34106,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 3020: // Buff me Increased Stamina + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,25661,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 3025: // Buff me Razorhide + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,16610,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 3030: // Buff me Rising Spirit + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,10767,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 3035: // Buff me Spirit of the Wind + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,16618,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 3040: // Buff me Wisdom of Agamaggan + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,7764,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +//////////////////////////////////////////////////Player Tools/////////////////////////////////////////////////////////////// + +case 4001://Give me Gold + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,46642,false); // 5000 gold +break; + +case 4005://Give me Soul Shards + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,24827,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 4010: // Heal me please + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->CastSpell(pPlayer,38588,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 4015: // Heal me and party members Please + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,53251,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 4020: // Conjure Refreshment + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,42956,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 4025: // Conjure Mana Gem + pPlayer->CLOSE_GOSSIP_MENU(); + pPlayer->CastSpell(pPlayer,42985,false); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0))); +break; + +case 5000://Remove Res Sickness + if(!pPlayer->HasAura(15007,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas le Mal de Résurrection.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pCreature->CastSpell(pPlayer,38588,false); // Healing effect + pPlayer->RemoveAurasDueToSpell(15007); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + + pPlayer->CLOSE_GOSSIP_MENU(); + +} // end of switch +} //end of function + +}; + + + + + + +void AddSC_buffnpc() +{ + new buffnpc(); +} diff --git a/src/server/scripts/World/npc_change_character.cpp b/src/server/scripts/World/npc_change_character.cpp new file mode 100644 index 0000000..72656cb --- /dev/null +++ b/src/server/scripts/World/npc_change_character.cpp @@ -0,0 +1,110 @@ +#include "ScriptPCH.h" +#include "Config.h" +#include "UnicodeConvert.h" + +extern LoginDatabaseWorkerPool LoginDatabase; +extern CharacterDatabaseWorkerPool CharacterDatabase; + +extern char FactionHordeToAllianceChar[255]; +extern char FactionAllianceToHordeChar[255]; +extern char CustomizeChar[255]; +extern char RaceChar[255] ; +class npc_character_change : public CreatureScript +{ +public: + npc_character_change() : CreatureScript("npc_character_change") { } + + bool OnGossipHello(Player * pPlayer, Creature * _Creature) + { + if(pPlayer->getFaction() == ALLIANCE) + pPlayer->ADD_GOSSIP_ITEM(6, FactionAllianceToHordeChar , GOSSIP_SENDER_MAIN, 2); + else + pPlayer->ADD_GOSSIP_ITEM(6, FactionHordeToAllianceChar , GOSSIP_SENDER_MAIN, 2); + pPlayer->ADD_GOSSIP_ITEM(6, CustomizeChar , GOSSIP_SENDER_MAIN, 3); + pPlayer->ADD_GOSSIP_ITEM(6, RaceChar , GOSSIP_SENDER_MAIN, 4); + pPlayer->ADD_GOSSIP_ITEM(6, "Quitter", GOSSIP_SENDER_MAIN, 11); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID()); + return true; + } + + bool OnGossipSelect(Player *pPlayer, Creature *_Creature, uint32 sender, uint32 action ) + { + // Main menu + char msg[255]; + if (sender == GOSSIP_SENDER_MAIN) + { + switch(action) + { + case 2:// changement de faction + { + uint32 count = pPlayer->getFaction() == ALLIANCE ? sWorld->getIntConfig(CONFIG_CHANGE_FACTION_ITEM_COUNT_ALLIANCE_TO_HORDE):sWorld->getIntConfig(CONFIG_CHANGE_FACTION_ITEM_COUNT_HORDE_TO_ALLIANCE); + + if (pPlayer->HasItemCount(sWorld->getIntConfig(CONFIG_CHANGE_FACTION_ITEM), count )) + { + ChatHandler chathandler(pPlayer); + if(chathandler.HandleCharacterChangeFactionCommandAddr(pPlayer->GetName())) + { + pPlayer->DestroyItemCount(sWorld->getIntConfig(CONFIG_CHANGE_FACTION_ITEM), count , true); + char mess[] = "L'option de changement de faction à été effectué avec succès, veuillez vous déconnecter et vous reconnecter puis procéder à vos modification"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + + } + else + { + _Creature->MonsterTextEmote("Nombre d'item requis insuffisant!", pPlayer->GetGUID()); + } + break; + } + case 3:// customization + { + if (pPlayer->HasItemCount(sWorld->getIntConfig(CONFIG_CHANGE_CUSTOMIZE_ITEM), sWorld->getIntConfig(CONFIG_CHANGE_CUSTOMIZE_ITEM_COUNT))) + { + ChatHandler chathandler(pPlayer); + if(chathandler.HandleCharacterCustomizeCommandAddr(pPlayer->GetName())) + { + pPlayer->DestroyItemCount(sWorld->getIntConfig(CONFIG_CHANGE_CUSTOMIZE_ITEM), sWorld->getIntConfig(CONFIG_CHANGE_CUSTOMIZE_ITEM_COUNT), true); + char mess[] = "La demande de customization à été effectué avec succès, veuillez vous déconnecter et vous reconnecter puis procéder à vos modification"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + _Creature->MonsterTextEmote("Nombre d'item requis insuffisant!", pPlayer->GetGUID()); + } + break; + } + case 4:// changement de race + { + if (pPlayer->HasItemCount(sWorld->getIntConfig(CONFIG_CHANGE_RACE_ITEM), sWorld->getIntConfig(CONFIG_CHANGE_RACE_ITEM_COUNT))) + { + ChatHandler chathandler(pPlayer); + if(chathandler.HandleCharacterChangeRaceCommandAddr(pPlayer->GetName())) + { + pPlayer->DestroyItemCount(sWorld->getIntConfig(CONFIG_CHANGE_RACE_ITEM), sWorld->getIntConfig(CONFIG_CHANGE_RACE_ITEM_COUNT), true); + char mess[] = "La demande de changement de race à été effectué avec succès, veuillez vous déconnecter et vous reconnecter puis procéder à vos modification"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + _Creature->MonsterTextEmote("Nombre d'item requis insuffisant!", pPlayer->GetGUID()); + } + break; + } + + } + } + pPlayer->CLOSE_GOSSIP_MENU(); + return true; + } +}; + + +void AddSC_Change_Character() +{ + new npc_character_change(); +} \ No newline at end of file diff --git a/src/server/scripts/World/npc_honneur_sceau_de_champion_fun.cpp b/src/server/scripts/World/npc_honneur_sceau_de_champion_fun.cpp new file mode 100644 index 0000000..74833e4 --- /dev/null +++ b/src/server/scripts/World/npc_honneur_sceau_de_champion_fun.cpp @@ -0,0 +1,405 @@ +/* ScriptData +SDName: npc_honneur_sceau_de_champion_fun +SD%Complete: 100% +SDComment: Change des points d'honneur en Sceau de champion +SDCategory: NPC +EndScriptData */ + +#include "ScriptPCH.h" +#include "Log.h" +#include "Player.h" + + +#define GOSSIP_100GOULET_TO_HONNEUR "Changer 100 marques du goulet de chanteguere contre 5000 points d'honneur" +#define GOSSIP_50GOULET_TO_HONNEUR "Changer 50 marques du goulet de chanteguere contre 2500 points d'honneur" +#define GOSSIP_100ARATHI_TO_HONNEUR "Changer 100 marques d'arathi contre 15000 points d'honneur" +#define GOSSIP_50ARATHI_TO_HONNEUR "Changer 50 marques d'arathi contre 7500 points d'honneur" +#define GOSSIP_100ALTERAC_TO_HONNEUR "Changer 100 marques d'alterac contre 15000 points d'honneur" +#define GOSSIP_50ALTERAC_TO_HONNEUR "Changer 50 marques d'alterac contre 7500 points d'honneur" +#define GOSSIP_100CYCLONE_TO_HONNEUR "Changer 100 marques de l'oeil du cyclone contre 15000 points d'honneur" +#define GOSSIP_50CYCLONE_TO_HONNEUR "Changer 50 marques de l'oeil du cyclone contre 7500 points d'honneur" +#define GOSSIP_100JOUG_TO_HONNEUR "Changer 100 marques du joug contre 15000 points d'honneur" +#define GOSSIP_50JOUG_TO_HONNEUR "Changer 50 marques du joug contre 7500 points d'honneur" + +class npc_honneur_sceau_de_champion_fun : public CreatureScript +{ +public: + npc_honneur_sceau_de_champion_fun() : CreatureScript("npc_honneur_sceau_de_champion_fun") { } + + bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) + { + pPlayer->PlayerTalkClass->ClearMenus(); + if (uiSender == GOSSIP_SENDER_MAIN) + SendDefaultMenu_npc_honneur_sceau_de_champion_fun(pPlayer, pCreature, uiAction); + + return true; + } + + + bool OnGossipHello(Player* pPlayer, Creature* pCreature) + { + + pPlayer->ADD_GOSSIP_ITEM( 7, "Echange d'honneur contre des Sceau de champion ->" , GOSSIP_SENDER_MAIN, 6000); + pPlayer->ADD_GOSSIP_ITEM( 7, "Echange d'arène contre des Sceau de champion ->" , GOSSIP_SENDER_MAIN, 7000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); + return true; + } + + +void SendDefaultMenu_npc_honneur_sceau_de_champion_fun(Player* pPlayer, Creature* pCreature, uint32 uiAction) +{ + +if (pPlayer->isInCombat()) +{ + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->MonsterWhisper("Vous êtes en combat.", pPlayer->GetGUID()); + return; +} + +switch(uiAction) +{ + +case 1000: + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_50GOULET_TO_HONNEUR, GOSSIP_SENDER_MAIN, 1001); + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_100GOULET_TO_HONNEUR, GOSSIP_SENDER_MAIN, 1002); + pPlayer->ADD_GOSSIP_ITEM(7, "Menu ->", GOSSIP_SENDER_MAIN, 9000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 2000: + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_50ARATHI_TO_HONNEUR, GOSSIP_SENDER_MAIN, 2001); + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_100ARATHI_TO_HONNEUR, GOSSIP_SENDER_MAIN, 2002); + pPlayer->ADD_GOSSIP_ITEM(7, "Menu ->", GOSSIP_SENDER_MAIN, 9000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 3000: + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_50ALTERAC_TO_HONNEUR, GOSSIP_SENDER_MAIN, 3001); + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_100ALTERAC_TO_HONNEUR, GOSSIP_SENDER_MAIN, 3002); + pPlayer->ADD_GOSSIP_ITEM(7, "Menu ->", GOSSIP_SENDER_MAIN, 9000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 4000: + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_50CYCLONE_TO_HONNEUR, GOSSIP_SENDER_MAIN, 4001); + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_100CYCLONE_TO_HONNEUR, GOSSIP_SENDER_MAIN, 4002); + pPlayer->ADD_GOSSIP_ITEM(7, "Menu ->", GOSSIP_SENDER_MAIN, 9000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 5000: + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_50JOUG_TO_HONNEUR, GOSSIP_SENDER_MAIN, 5001); + pPlayer->ADD_GOSSIP_ITEM(5, GOSSIP_100JOUG_TO_HONNEUR, GOSSIP_SENDER_MAIN, 5002); + pPlayer->ADD_GOSSIP_ITEM(7, "Menu ->", GOSSIP_SENDER_MAIN, 9000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 6000: + pPlayer->ADD_GOSSIP_ITEM(5, "Changer 1700 points d'honneurs contre 1 Sceau de champion", GOSSIP_SENDER_MAIN, 6001); + pPlayer->ADD_GOSSIP_ITEM(5, "Changer 17000 points d'honneurs contre 10 Sceau de champion", GOSSIP_SENDER_MAIN, 6002); + pPlayer->ADD_GOSSIP_ITEM(5, "Changer 50000 points d'honneurs contre 30 Sceau de champion", GOSSIP_SENDER_MAIN, 6003); + pPlayer->ADD_GOSSIP_ITEM(7, "Menu ->", GOSSIP_SENDER_MAIN, 9000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 7000: + pPlayer->ADD_GOSSIP_ITEM(5, "Changer 1000 points d'arènes contre 10 Sceau de champion", GOSSIP_SENDER_MAIN, 7001); + pPlayer->ADD_GOSSIP_ITEM(5, "Changer 2000 points d'arènes contre 20 Sceau de champion", GOSSIP_SENDER_MAIN, 7002); + pPlayer->ADD_GOSSIP_ITEM(5, "Changer 3000 points d'arènes contre 30 Sceau de champion", GOSSIP_SENDER_MAIN, 7003); + pPlayer->ADD_GOSSIP_ITEM(7, "Menu ->", GOSSIP_SENDER_MAIN, 9000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 9000: + pPlayer->ADD_GOSSIP_ITEM( 7, "Echange d'honneur contre des Sceau de champion ->" , GOSSIP_SENDER_MAIN, 6000); + pPlayer->ADD_GOSSIP_ITEM( 7, "Echange d'arène contre des Sceau de champion ->" , GOSSIP_SENDER_MAIN, 7000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 1001: + if (pPlayer->HasItemCount(20558, 50)) + { + pPlayer->DestroyItemCount(20558, 50, true); + pPlayer->ModifyHonorPoints(2500); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1002: + if (pPlayer->HasItemCount(20558, 100)) + { + pPlayer->DestroyItemCount(20558, 100, true); + pPlayer->ModifyHonorPoints(5000); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 2001: + if (pPlayer->HasItemCount(20559, 50)) + { + pPlayer->DestroyItemCount(20559, 50, true); + pPlayer->ModifyHonorPoints(7500); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 2002: + if (pPlayer->HasItemCount(20559, 100)) + { + pPlayer->DestroyItemCount(20559, 100, true); + pPlayer->ModifyHonorPoints(15000); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 3001: + if (pPlayer->HasItemCount(20560, 50)) + { + pPlayer->DestroyItemCount(20560, 50, true); + pPlayer->ModifyHonorPoints(7500); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 3002: + if (pPlayer->HasItemCount(20560, 100)) + { + pPlayer->DestroyItemCount(20560, 100, true); + pPlayer->ModifyHonorPoints(15000); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 4001: + if (pPlayer->HasItemCount(29024, 50)) + { + pPlayer->DestroyItemCount(29024, 50, true); + pPlayer->ModifyHonorPoints(7500); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 4002: + if (pPlayer->HasItemCount(29024, 100)) + { + pPlayer->DestroyItemCount(29024, 100, true); + pPlayer->ModifyHonorPoints(15000); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 5001: + if (pPlayer->HasItemCount(43589, 50)) + { + pPlayer->DestroyItemCount(43589, 50, true); + pPlayer->ModifyHonorPoints(7500); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 5002: + if (pPlayer->HasItemCount(43589, 100)) + { + pPlayer->DestroyItemCount(43589, 100, true); + pPlayer->ModifyHonorPoints(15000); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de marque, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 6001: + if (pPlayer->GetHonorPoints() >= 1700) + { + pCreature->addItem(pPlayer, 44990, 1, true, true, false); + pPlayer->ModifyHonorPoints(-1700); + sLog->outDetail("Compte '%u'; GUID '%u' ?chet?1' chap contre de l'honneur",pPlayer->GetSession()->GetAccountId(), pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez d'honneur, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 6002: + if (pPlayer->GetHonorPoints() >= 17000) + { + pCreature->addItem(pPlayer, 44990, 10, true, true, false); + pPlayer->ModifyHonorPoints(-17000); + sLog->outDetail("Compte '%u'; GUID '%u' ?chet?10' chap contre de l'honneur",pPlayer->GetSession()->GetAccountId(), pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez d'honneur, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 6003: + if (pPlayer->GetHonorPoints() >= 50000) + { + pCreature->addItem(pPlayer, 44990, 30, true, true, false); + pPlayer->ModifyHonorPoints(-50000); + sLog->outString("Compte '%u'; GUID '%u' ?chet?30' chap contre de l'honneur",pPlayer->GetSession()->GetAccountId(), pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez d'honneur, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 7001: + if (pPlayer->GetArenaPoints() >= 1000) + { + pCreature->addItem(pPlayer, 44990, 10, true, true, false); + pPlayer->ModifyArenaPoints(-1000); + sLog->outString("Compte '%u'; GUID '%u' ?chet?10' chap contre des points d'arenes",pPlayer->GetSession()->GetAccountId(), pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de point d'arene, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 7002: + if (pPlayer->GetArenaPoints() >= 2000) + { + pCreature->addItem(pPlayer, 44990, 20, true, true, false); + pPlayer->ModifyArenaPoints(-2000); + sLog->outString("Compte '%u'; GUID '%u' ?chet?20' chap contre des points d'arenes",pPlayer->GetSession()->GetAccountId(), pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de point d'arene, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 7003: + if (pPlayer->GetArenaPoints() >= 3000) + { + pCreature->addItem(pPlayer, 44990, 30, true, true, false); + pPlayer->ModifyArenaPoints(-3000); + sLog->outDetail("Compte '%u'; GUID '%u' ?chet?30' chap contre des points d'arenes",pPlayer->GetSession()->GetAccountId(), pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de point d'arene, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 10001: + if (pPlayer->HasItemCount(24245, 1)) + { + pPlayer->DestroyItemCount(24245, 1, true); + pCreature->addItem(pPlayer, 44990, 1, true, true, false); + uint32 count = 1; + //pPlayer->LogChap(count); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de Sceau de champion, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 10002: + if (pPlayer->HasItemCount(24245, 10)) + { + pPlayer->DestroyItemCount(24245, 10, true); + pCreature->addItem(pPlayer, 44990, 10, true, true, false); + uint32 count = 10; + //pPlayer->LogChap(count); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de Sceau de champion, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 10003: + if (pPlayer->HasItemCount(24245, 20)) + { + pPlayer->DestroyItemCount(24245, 20, true); + pCreature->addItem(pPlayer, 44990, 20, true, true, false); + uint32 count = 20; + //pPlayer->LogChap(count); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de Sceau de champion, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 10004: + if (pPlayer->HasItemCount(24245, 30)) + { + pPlayer->DestroyItemCount(24245, 30, true); + pCreature->addItem(pPlayer, 44990, 30, true, true, false); + uint32 count = 30; + //pPlayer->LogChap(count); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de Sceau de champion, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 10005: + if (pPlayer->HasItemCount(24245, 50)) + { + pPlayer->DestroyItemCount(24245, 50, true); + pCreature->addItem(pPlayer, 44990, 50, true, true, false); + uint32 count = 50; + //pPlayer->LogChap(count); + } + else + pCreature->MonsterWhisper("Vous n'avez pas assez de Sceau de champion, $C.", pPlayer->GetGUID()); + + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +} +} + +}; + + +void AddSC_npc_honneur_sceau_de_champion_fun() +{ + new npc_honneur_sceau_de_champion_fun(); +} diff --git a/src/server/scripts/World/npc_innkeeper.cpp b/src/server/scripts/World/npc_innkeeper.cpp index 2607b69..380eda5 100644 --- a/src/server/scripts/World/npc_innkeeper.cpp +++ b/src/server/scripts/World/npc_innkeeper.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/npc_magicien.cpp b/src/server/scripts/World/npc_magicien.cpp new file mode 100644 index 0000000..ea6bed7 --- /dev/null +++ b/src/server/scripts/World/npc_magicien.cpp @@ -0,0 +1,112 @@ + + + +#include "ScriptPCH.h" + +enum UznamSpells +{ + EARTHQUAKE = 46240, + WHIRLWIND = 52027, + SHOCK_OF_SORROW = 50760, + ENTROPIC_AURA = 36784, + AURAL_SHOCK = 14538 +}; + +// Uznam yells +#define SAY_UZNAM_AGGRO "Qui ose violer notre Sanctuaire?" +#define SAY_UZNAM_SLAY "Les Pandariens sont trop faible!!!!" +#define SAY_UZNAM_DEATH "IMPO..SSIIII...BBLLEEE..." +#define SAY_UZNAM_SPECIAL "Vous n'avez réussi qu'à libérer ma Colère!" +#define EMOTE_WHIRL "Furax le Guetteur commence à lancer Tourbillon!" + + +class npc_uznam_the_watcher : public CreatureScript +{ +public: + npc_uznam_the_watcher() : CreatureScript("npc_uznam_the_watcher") { } + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_uznam_the_watcherAI (pCreature); + } + + struct npc_uznam_the_watcherAI : public ScriptedAI + { + npc_uznam_the_watcherAI(Creature *pCreature) : ScriptedAI(pCreature){} + + uint32 EarthquakeTimer; + uint32 WhirlwindTimer; + uint32 ShockTimer; + uint32 AuralShockTimer; + + void Reset() + { + EarthquakeTimer = 8000; + WhirlwindTimer = 20000; + ShockTimer = 30000; + AuralShockTimer = 50000; + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_UZNAM_AGGRO, LANG_UNIVERSAL, 0); + DoCast(me, ENTROPIC_AURA); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_UZNAM_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_UZNAM_DEATH, LANG_UNIVERSAL, 0); + } + + void UpdateAI(const uint32 uiDiff) + { + if (!UpdateVictim()) + return; + + // Earthquake Ogni 20 secondi. + if (EarthquakeTimer <= uiDiff) + { + DoCast(EARTHQUAKE); + EarthquakeTimer = 20000; + } else EarthquakeTimer -= uiDiff; + + // Whirlwind Ogni 30 sec + if (WhirlwindTimer <= uiDiff) + { + me->MonsterYell(SAY_UZNAM_SPECIAL, LANG_UNIVERSAL, 0); + me->MonsterTextEmote(EMOTE_WHIRL, 0, true); + DoCast(me, WHIRLWIND); + WhirlwindTimer = 30000; + } else WhirlwindTimer -= uiDiff; + + // Shock of sorrow Ogni 40 sec. + if (ShockTimer <= uiDiff) + { + if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0)) + DoCast(pTarget, SHOCK_OF_SORROW); + ShockTimer = 40000; + } else ShockTimer -= uiDiff; + + // Aural Shock Ogni minuto + if (AuralShockTimer <= uiDiff) + { + DoCast(AURAL_SHOCK); + AuralShockTimer = 60000; + } else AuralShockTimer -= uiDiff; + + DoMeleeAttackIfReady(); + } + }; + +}; + + +void AddSC_npc_magicien() +{ + new npc_uznam_the_watcher; +} diff --git a/src/server/scripts/World/npc_marquegoulet.cpp b/src/server/scripts/World/npc_marquegoulet.cpp new file mode 100644 index 0000000..29acb62 --- /dev/null +++ b/src/server/scripts/World/npc_marquegoulet.cpp @@ -0,0 +1,114 @@ +#include "ScriptPCH.h" + +#define EM_GOULET 20558 + + +#define ERROR_GOULET "Vous n'avez pas assez de marques de Goulet" + + +class npc_marquegoulet : public CreatureScript +{ +public: + npc_marquegoulet() : CreatureScript("npc_marquegoulet") { } + + bool OnGossipHello(Player * pPlayer, Creature * _Creature) + { + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger vos marques de goulet contre de l'honneur" , GOSSIP_SENDER_MAIN, 2); + pPlayer->ADD_GOSSIP_ITEM(0, "Quitter", GOSSIP_SENDER_MAIN, 40); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID()); + return true; + } + + void AddRewardToPlr(uint32 idToAdd, uint32 idToDel, uint32 cnt, Player *plr, Creature *crea, const char* msg) + { + crea->MonsterWhisper(msg, plr->GetGUID()); + plr->DestroyItemCount(idToDel, cnt, true); + plr->ModifyHonorPoints(idToAdd); + } + + void ShowErrorDueToTrans(Player *plr, Creature *crea, const char* error_val) + { + crea->MonsterWhisper(error_val, plr->GetGUID()); + plr->CLOSE_GOSSIP_MENU(); + } + + void SendDefaultMenu(Player *pPlayer, Creature *_Creature, uint32 action ) + { + switch(action) + { + case 2: + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 1 > marque de Goulet contre < 50 > points d'honneur" , GOSSIP_SENDER_MAIN, 6); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 2 > marques de Goulet contre < 100 > points d'honneur" , GOSSIP_SENDER_MAIN, 7); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 3 > marques de Goulet contre < 150 > points d'honneur" , GOSSIP_SENDER_MAIN, 8); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 5 > marques de Goulet contre < 250 > points d'honneur" , GOSSIP_SENDER_MAIN, 9); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 10 > marques de Goulet contre < 500 > points d'honneur" , GOSSIP_SENDER_MAIN, 10); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 20 > marques de Goulet contre < 1000 > points d'honneur" , GOSSIP_SENDER_MAIN, 11); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 50 > marques de Goulet contre < 2500 > points d'honneur" , GOSSIP_SENDER_MAIN, 12); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 100 > marques de Goulet contre < 5000 > points d'honneur" , GOSSIP_SENDER_MAIN, 13); + pPlayer->ADD_GOSSIP_ITEM(0, "Quitter", GOSSIP_SENDER_MAIN, 40); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID()); + break; + + case 6: // 1 goul vs honnor + if(!pPlayer->HasItemCount(EM_GOULET,1)) ShowErrorDueToTrans(pPlayer, _Creature, ERROR_GOULET); + else AddRewardToPlr(50, EM_GOULET, 1, pPlayer, _Creature, "Vous avez recu 50 points d'honneur."); + break; + + case 7: // + if(!pPlayer->HasItemCount(EM_GOULET,2)) ShowErrorDueToTrans(pPlayer, _Creature, ERROR_GOULET); + else AddRewardToPlr(100, EM_GOULET, 2, pPlayer, _Creature, "Vous avez recu 100 points d'honneur."); + break; + + case 8: + if(!pPlayer->HasItemCount(EM_GOULET,3)) ShowErrorDueToTrans(pPlayer, _Creature, ERROR_GOULET); + else AddRewardToPlr(150, EM_GOULET, 3, pPlayer, _Creature, "Vous avez recu 150 points d'honneur."); + break; + + case 9: + if(!pPlayer->HasItemCount(EM_GOULET,5)) ShowErrorDueToTrans(pPlayer, _Creature, ERROR_GOULET); + else AddRewardToPlr(250, EM_GOULET, 5, pPlayer, _Creature, "Vous avez recu 250 points d'honneur."); + break; + + case 10: + if(!pPlayer->HasItemCount(EM_GOULET,10)) ShowErrorDueToTrans(pPlayer, _Creature, ERROR_GOULET); + else AddRewardToPlr(500, EM_GOULET, 10, pPlayer, _Creature, "Vous avez recu 500 points d'honneur."); + break; + + case 11: + if(!pPlayer->HasItemCount(EM_GOULET,20)) ShowErrorDueToTrans(pPlayer, _Creature, ERROR_GOULET); + else AddRewardToPlr(1000, EM_GOULET, 20, pPlayer, _Creature, "Vous avez recu 1000 points d'honneur."); + break; + + case 12: + if(!pPlayer->HasItemCount(EM_GOULET,50)) ShowErrorDueToTrans(pPlayer, _Creature, ERROR_GOULET); + else AddRewardToPlr(2500, EM_GOULET, 50, pPlayer, _Creature, "Vous avez recu 2500 points d'honneur."); + break; + + case 13: + if(!pPlayer->HasItemCount(EM_GOULET,100)) ShowErrorDueToTrans(pPlayer, _Creature, ERROR_GOULET); + else AddRewardToPlr(5000, EM_GOULET, 100, pPlayer, _Creature, "Vous avez recu 5000 points d'honneur."); + break; + + case 40: + pPlayer->CLOSE_GOSSIP_MENU(); + break; + } + } + + bool OnGossipSelect(Player *pPlayer, Creature *_Creature, uint32 sender, uint32 action ) + { + pPlayer->PlayerTalkClass->ClearMenus(); + + // Main menu + if (sender == GOSSIP_SENDER_MAIN) SendDefaultMenu(pPlayer, _Creature, action ); + if(action > 5 && action != 40) pPlayer->CLOSE_GOSSIP_MENU(); + + return true; + } +}; + +void AddSC_npc_marquegoulet() +{ + new npc_marquegoulet(); +} + diff --git a/src/server/scripts/World/npc_professions.cpp b/src/server/scripts/World/npc_professions.cpp index 93bd011..12cce50 100644 --- a/src/server/scripts/World/npc_professions.cpp +++ b/src/server/scripts/World/npc_professions.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/npc_rapidchange.cpp b/src/server/scripts/World/npc_rapidchange.cpp new file mode 100644 index 0000000..f6a3252 --- /dev/null +++ b/src/server/scripts/World/npc_rapidchange.cpp @@ -0,0 +1,412 @@ +#include "ScriptPCH.h" + +#define em_conquette 45624 +#define em_vaillance 40753 +#define em_heroisme 40752 +#define em_triomphe 47241 +#define em_givre 49426 + +#define error_conquette "Vous n'avez pas assez d'emblèmes de Conquête" +#define error_vaillance "Vous n'avez pas assez d'emblèmes de Vaillance" +#define error_givre "Vous n'avez pas assez d'emblèmes de Givre" +#define error_triomphe "Vous n'avez pas assez d'emblèmes de Triomphe" + + +class npc_rapidchange : public CreatureScript +{ +public: + npc_rapidchange() : CreatureScript("npc_rapidchange") { } + + bool OnGossipHello(Player * pPlayer, Creature * _Creature) + { + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger vos emblèmes de Triomphe contre des emblèmes de Conquête" , GOSSIP_SENDER_MAIN, 2); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger vos emblèmes de Conquête contre des emblèmes de Vaillance" , GOSSIP_SENDER_MAIN, 3); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger vos emblèmes de Vaillance contre des emblèmes d'Héroisme" , GOSSIP_SENDER_MAIN, 4); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger vos emblèmes de Givre contre des emblèmes de Triomphe" , GOSSIP_SENDER_MAIN, 5); + pPlayer->ADD_GOSSIP_ITEM(6, "Quitter", GOSSIP_SENDER_MAIN, 40); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID()); + return true; + } + + void AddRewardToPlr(uint32 idToAdd, uint32 idToDel, uint32 cnt, Player *plr, Creature *crea, const char* msg) + { + plr->DestroyItemCount(idToDel, cnt, true); + plr->AddItem(idToAdd,cnt); + + crea->MonsterWhisper(msg, plr->GetGUID()); + } + + void ShowErrorDueToTrans(Player *plr, Creature *crea, const char* error_val) + { + crea->MonsterWhisper(error_val, plr->GetGUID()); + plr->CLOSE_GOSSIP_MENU(); + } + + void SendDefaultMenu(Player *pPlayer, Creature *_Creature, uint32 action ) + { + + switch(action) + { + case 2: // embleme conq vs triomphe + { + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 1 > emblèmes de Triomphe contre < 1 > emblèmes de Conquête" , GOSSIP_SENDER_MAIN, 6); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 2 > emblèmes de Triomphe contre < 2 > emblèmes de Conquête" , GOSSIP_SENDER_MAIN, 7); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 3 > emblèmes de Triomphe contre < 3 > emblèmes de Conquête" , GOSSIP_SENDER_MAIN, 8); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 5 > emblèmes de Triomphe contre < 5 > emblèmes de Conquête" , GOSSIP_SENDER_MAIN, 9); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 10 > emblèmes de Triomphe contre < 10 > emblèmes de Conquête" , GOSSIP_SENDER_MAIN, 10); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 20 > emblèmes de Triomphe contre < 20 > emblèmes de Conquête" , GOSSIP_SENDER_MAIN, 11); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 50 > emblèmes de Triomphe contre < 50 > emblèmes de Conquête" , GOSSIP_SENDER_MAIN, 12); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 100 > emblèmes de Triomphe contre < 100 > emblèmes de Conquête" , GOSSIP_SENDER_MAIN, 13); + pPlayer->ADD_GOSSIP_ITEM(6, "Quitter", GOSSIP_SENDER_MAIN, 40); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID()); + } + break; + case 3: // vaillance vs conq + { + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 1 > emblèmes de Conquête contre < 1 > emblèmes de Vaillance" , GOSSIP_SENDER_MAIN, 14); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 2 > emblèmes de Conquête contre < 2 > emblèmes de Vaillance" , GOSSIP_SENDER_MAIN, 15); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 3 > emblèmes de Conquête contre < 3 > emblèmes de Vaillance" , GOSSIP_SENDER_MAIN, 16); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 5 > emblèmes de Conquête contre < 5 > emblèmes de vaillance" , GOSSIP_SENDER_MAIN, 17); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 10 > emblèmes de Conquête contre < 10 > emblèmes de Vaillance" , GOSSIP_SENDER_MAIN, 18); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 20 > emblèmes de Conquête contre < 20 > emblèmes de Vaillance" , GOSSIP_SENDER_MAIN, 19); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 50 > emblèmes de Conquête contre < 50 > emblèmes de Vaillance" , GOSSIP_SENDER_MAIN, 20); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 100 > emblèmes de Conquête contre < 100 > emblèmes de Vaillance" , GOSSIP_SENDER_MAIN, 21); + pPlayer->ADD_GOSSIP_ITEM(6, "Quitter", GOSSIP_SENDER_MAIN, 40); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID()); + } + break; + case 4: // hero vs vaillance + { + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 1 > emblèmes de Vaillance contre < 1 > emblèmes d'Héroisme" , GOSSIP_SENDER_MAIN, 22); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 2 > emblèmes de Vaillance contre < 2 > emblèmes d'Héroisme" , GOSSIP_SENDER_MAIN, 23); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 3 > emblèmes de Vaillance contre < 3 > emblèmes d'Héroisme" , GOSSIP_SENDER_MAIN, 24); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 5 > emblèmes de Vaillance contre < 5 > emblèmes d'Héroisme" , GOSSIP_SENDER_MAIN, 25); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 10 > emblèmes de Vaillance contre < 10 > emblèmes d'Héroisme" , GOSSIP_SENDER_MAIN, 26); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 20 > emblèmes de Vaillance contre < 20 > emblèmes d'Héroisme" , GOSSIP_SENDER_MAIN, 27); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 50 > emblèmes de Vaillance contre < 50 > emblèmes d'Héroisme" , GOSSIP_SENDER_MAIN, 28); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 100 > emblèmes de Vaillance contre < 100 > emblèmes d'Héroisme" , GOSSIP_SENDER_MAIN, 29); + pPlayer->ADD_GOSSIP_ITEM(6, "Quitter", GOSSIP_SENDER_MAIN, 40); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID()); + } + break; + case 5: // triomphe vs givre + { + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 1 > emblèmes de Givre contre < 1 > emblèmes de Triomphe" , GOSSIP_SENDER_MAIN, 30); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 2 > emblèmes de Givre contre < 2 > emblèmes de Triomphe" , GOSSIP_SENDER_MAIN, 31); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 3 > emblèmes de Givre contre < 3 > emblèmes de Triomphe" , GOSSIP_SENDER_MAIN, 32); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 5 > emblèmes de Givre contre < 5 > emblèmes de Triomphe" , GOSSIP_SENDER_MAIN, 33); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 10 > emblèmes de Givre contre < 10 > emblèmes de Triomphe" , GOSSIP_SENDER_MAIN, 34); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 20 > emblèmes de Givre contre < 20 > emblèmes de Triomphe" , GOSSIP_SENDER_MAIN, 35); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 50 > emblèmes de Givre contre < 50 > emblèmes de Triomphe" , GOSSIP_SENDER_MAIN, 36); + pPlayer->ADD_GOSSIP_ITEM(6, "Echanger < 100 > emblèmes de Givre contre < 100 > emblèmes de Triomphe" , GOSSIP_SENDER_MAIN, 37); + pPlayer->ADD_GOSSIP_ITEM(6, "Quitter", GOSSIP_SENDER_MAIN, 40); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID()); + } + break; + case 6: // 1 tri vs conq + { + if(!pPlayer->HasItemCount(em_triomphe,1)) + ShowErrorDueToTrans(pPlayer, _Creature, error_triomphe); + else + AddRewardToPlr(em_conquette, em_triomphe, 1, pPlayer, _Creature, "Vous venez d'acquérir 1 emblème de Conquête"); + + //(uint32 idToAdd, uint32 idToDel, uint32 cnt, Player *plr, Creature *crea, const char* msg) + } + break; + case 7: // + { + if(!pPlayer->HasItemCount(em_triomphe,2)) + ShowErrorDueToTrans(pPlayer, _Creature, error_triomphe); + else + AddRewardToPlr(em_conquette, em_triomphe, 2, pPlayer, _Creature, "Vous venez d'acquérir 2 emblèmes de Conquête"); + } + break; + case 8: + { + if(!pPlayer->HasItemCount(em_triomphe,3)) + ShowErrorDueToTrans(pPlayer, _Creature, error_triomphe); + else + AddRewardToPlr(em_conquette, em_triomphe, 3, pPlayer, _Creature, "Vous venez d'acquérir 3 emblèmes de Conquête"); + } + break; + case 9: + { + if(!pPlayer->HasItemCount(em_triomphe,5)) + ShowErrorDueToTrans(pPlayer, _Creature, error_triomphe); + else + AddRewardToPlr(em_conquette, em_triomphe, 5, pPlayer, _Creature, "Vous venez d'acquérir 5 emblèmes de Conquête"); + } + break; + case 10: + { + if(!pPlayer->HasItemCount(em_triomphe,10)) + ShowErrorDueToTrans(pPlayer, _Creature, error_triomphe); + else + AddRewardToPlr(em_conquette, em_triomphe, 10, pPlayer, _Creature, "Vous venez d'acquerir 10 emblèmes de Conquête"); + + } + break; + case 11: + { + if(!pPlayer->HasItemCount(em_triomphe,20)) + ShowErrorDueToTrans(pPlayer, _Creature, error_triomphe); + else + AddRewardToPlr(em_conquette, em_triomphe, 20, pPlayer, _Creature, "Vous venez d'acquérir 20 emblèmes de Conquête"); + + } + break; + case 12: + { + if(!pPlayer->HasItemCount(em_triomphe,50)) + ShowErrorDueToTrans(pPlayer, _Creature, error_triomphe); + else + AddRewardToPlr(em_conquette, em_triomphe, 50, pPlayer, _Creature, "Vous venez d'acquérir 50 emblèmes de Conquête"); + } + break; + case 13: + { + if(!pPlayer->HasItemCount(em_triomphe,100)) + ShowErrorDueToTrans(pPlayer, _Creature, error_triomphe); + else + AddRewardToPlr(em_conquette, em_triomphe, 100, pPlayer, _Creature, "Vous venez d'acquérir 100 emblèmes de Conquête"); + } + break; + case 14: // add vaillance vs conquette + { + if(!pPlayer->HasItemCount(em_conquette,1)) + ShowErrorDueToTrans(pPlayer, _Creature, error_conquette); + else + AddRewardToPlr(em_vaillance, em_conquette, 1, pPlayer, _Creature, "Vous venez d'acquerir 1 emblème de Vaillance"); + } + break; + case 15: + { + if(!pPlayer->HasItemCount(em_conquette,2)) + ShowErrorDueToTrans(pPlayer, _Creature, error_conquette); + else + AddRewardToPlr(em_vaillance, em_conquette, 2, pPlayer, _Creature, "Vous venez d'acquérir 2 emblèmes de Vaillance"); + } + break; + case 16: + { + if(!pPlayer->HasItemCount(em_conquette,3)) + ShowErrorDueToTrans(pPlayer, _Creature, error_conquette); + else + AddRewardToPlr(em_vaillance, em_conquette, 3, pPlayer, _Creature, "Vous venez d'acquérir 3 emblèmes de Vaillance"); + + } + break; + case 17: + { + if(!pPlayer->HasItemCount(em_conquette,5)) + ShowErrorDueToTrans(pPlayer, _Creature, error_conquette); + else + AddRewardToPlr(em_vaillance, em_conquette, 5, pPlayer, _Creature, "Vous venez d'acquérir 5 emblèmes de Vaillance"); + } + break; + case 18: + { + if(!pPlayer->HasItemCount(em_conquette,10)) + ShowErrorDueToTrans(pPlayer, _Creature, error_conquette); + else + AddRewardToPlr(em_vaillance, em_conquette, 10, pPlayer, _Creature, "Vous venez d'acquérir 10 emblèmes de Vaillance"); + + } + break; + case 19: + { + if(!pPlayer->HasItemCount(em_conquette,20)) + ShowErrorDueToTrans(pPlayer, _Creature, error_conquette); + else + AddRewardToPlr(em_vaillance, em_conquette, 20, pPlayer, _Creature, "Vous venez d'acquérir 20 emblèmes de Vaillance"); + + } + break; + case 20: + { + if(!pPlayer->HasItemCount(em_conquette,50)) + ShowErrorDueToTrans(pPlayer, _Creature, error_conquette); + else + AddRewardToPlr(em_vaillance, em_conquette, 50, pPlayer, _Creature, "Vous venez d'acquérir 50 emblèmes de Vaillance"); + + } + break; + case 21: + { + if(!pPlayer->HasItemCount(em_conquette,100)) + ShowErrorDueToTrans(pPlayer, _Creature, error_conquette); + else + AddRewardToPlr(em_vaillance, em_conquette, 100, pPlayer, _Creature, "Vous venez d'acquérir 100 emblèmes de Vaillance"); + + } + break; + case 22: // add heroisme vs vaillance + { + if(!pPlayer->HasItemCount(em_vaillance,1)) + ShowErrorDueToTrans(pPlayer, _Creature, error_vaillance); + else + AddRewardToPlr(em_heroisme, em_vaillance, 1, pPlayer, _Creature, "Vous venez d'acquérir 1 emblème d'Héroisme"); + + } + break; + case 23: + { + if(!pPlayer->HasItemCount(em_vaillance,2)) + ShowErrorDueToTrans(pPlayer, _Creature, error_vaillance); + else + AddRewardToPlr(em_heroisme, em_vaillance, 2, pPlayer, _Creature, "Vous venez d'acquérir 2 emblèmes d'Héroisme"); + + } + break; + case 24: + { + if(!pPlayer->HasItemCount(em_vaillance,3)) + ShowErrorDueToTrans(pPlayer, _Creature, error_vaillance); + else + AddRewardToPlr(em_heroisme, em_vaillance, 3, pPlayer, _Creature, "Vous venez d'acquérir 3 emblèmes d'Héroisme"); + + } + break; + case 25: + { + if(!pPlayer->HasItemCount(em_vaillance,5)) + ShowErrorDueToTrans(pPlayer, _Creature, error_vaillance); + else + AddRewardToPlr(em_heroisme, em_vaillance, 5, pPlayer, _Creature, "Vous venez d'acquérir 5 emblèmes d'Héroisme"); + + } + break; + case 26: + { + if(!pPlayer->HasItemCount(em_vaillance,10)) + ShowErrorDueToTrans(pPlayer, _Creature, error_vaillance); + else + AddRewardToPlr(em_heroisme, em_vaillance, 10, pPlayer, _Creature, "Vous venez d'acquérir 10 emblèmes d'Héroisme"); + + } + break; + case 27: + { + if(!pPlayer->HasItemCount(em_vaillance,20)) + ShowErrorDueToTrans(pPlayer, _Creature, error_vaillance); + else + AddRewardToPlr(em_heroisme, em_vaillance, 20, pPlayer, _Creature, "Vous venez d'acquérir 20 emblèmes d'Héroisme"); + + } + break; + case 28: + { + if(!pPlayer->HasItemCount(em_vaillance,50)) + ShowErrorDueToTrans(pPlayer, _Creature, error_vaillance); + else + AddRewardToPlr(em_heroisme, em_vaillance, 50, pPlayer, _Creature, "Vous venez d'acquérir 50 emblèmes d'Héroisme"); + + } + break; + case 29: + { + if(!pPlayer->HasItemCount(em_vaillance,100)) + ShowErrorDueToTrans(pPlayer, _Creature, error_vaillance); + else + AddRewardToPlr(em_heroisme, em_vaillance, 100, pPlayer, _Creature, "Vous venez d'acquérir 100 emblèmes d'Héroisme"); + + } + break; + case 30: // add triomphe contre givre + { + if(!pPlayer->HasItemCount(em_givre,1)) + ShowErrorDueToTrans(pPlayer, _Creature, error_givre); + else + AddRewardToPlr(em_triomphe, em_givre, 1, pPlayer, _Creature, "Vous venez d'acquérir 1 emblème de Triomphe"); + + } + break; + case 31: + { + if(!pPlayer->HasItemCount(em_givre,2)) + ShowErrorDueToTrans(pPlayer, _Creature, error_givre); + else + AddRewardToPlr(em_triomphe, em_givre, 2, pPlayer, _Creature, "Vous venez d'acquérir 2 emblèmes de Triomphe"); + + } + break; + case 32: + { + if(!pPlayer->HasItemCount(em_givre,3)) + ShowErrorDueToTrans(pPlayer, _Creature, error_givre); + else + AddRewardToPlr(em_triomphe, em_givre, 3, pPlayer, _Creature, "Vous venez d'acquérir 3 emblèmes de Triomphe"); + + } + break; + case 33: + { + if(!pPlayer->HasItemCount(em_givre,5)) + ShowErrorDueToTrans(pPlayer, _Creature, error_givre); + else + AddRewardToPlr(em_triomphe, em_givre, 5, pPlayer, _Creature, "Vous venez d'acquérir 5 emblèmes de Triomphe"); + + } + break; + case 34: + { + if(!pPlayer->HasItemCount(em_givre,10)) + ShowErrorDueToTrans(pPlayer, _Creature, error_givre); + else + AddRewardToPlr(em_triomphe, em_givre, 10, pPlayer, _Creature, "Vous venez d'acquérir 10 emblèmes de Triomphe"); + + } + break; + case 35: + { + if(!pPlayer->HasItemCount(em_givre,20)) + ShowErrorDueToTrans(pPlayer, _Creature, error_givre); + else + AddRewardToPlr(em_triomphe, em_givre, 20, pPlayer, _Creature, "Vous venez d'acquérir 20 emblèmes de Triomphe"); + + } + break; + case 36: + { + if(!pPlayer->HasItemCount(em_givre,50)) + ShowErrorDueToTrans(pPlayer, _Creature, error_givre); + else + AddRewardToPlr(em_triomphe, em_givre, 50, pPlayer, _Creature, "Vous venez d'acquérir 50 emblèmes de Triomphe"); + + } + break; + case 37: + { + if(!pPlayer->HasItemCount(em_givre,100)) + ShowErrorDueToTrans(pPlayer, _Creature, error_givre); + else + AddRewardToPlr(em_triomphe, em_givre, 100, pPlayer, _Creature, "Vous venez d'acquérir 100 emblèmes de Triomphe"); + + } + break; + case 40: + pPlayer->CLOSE_GOSSIP_MENU(); + break; + } + + } + bool OnGossipSelect(Player *pPlayer, Creature *_Creature, uint32 sender, uint32 action ) + { + pPlayer->PlayerTalkClass->ClearMenus(); + // Main menu + if (sender == GOSSIP_SENDER_MAIN) + SendDefaultMenu(pPlayer, _Creature, action ); + + if(action > 5 && action != 40) + pPlayer->CLOSE_GOSSIP_MENU(); + + return true; + + } +}; + +void AddSC_npc_rapidchange() +{ + new npc_rapidchange(); +} + diff --git a/src/server/scripts/World/npc_reputation.cpp b/src/server/scripts/World/npc_reputation.cpp new file mode 100644 index 0000000..947c672 --- /dev/null +++ b/src/server/scripts/World/npc_reputation.cpp @@ -0,0 +1,511 @@ +#include "ScriptPCH.h" +#include "Config.h" +#include "UnicodeConvert.h" + +#define EM_SCEAU_DE_CHAMPION 44990 + +extern LoginDatabaseWorkerPool LoginDatabase; +extern CharacterDatabaseWorkerPool CharacterDatabase; + +class npc_reputation : public CreatureScript +{ +public: + npc_reputation() : CreatureScript("npc_reputation") { } + + bool OnGossipHello(Player * pPlayer, Creature * _Creature) + { + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte au Verdict des Cendres pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 2); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte aux Fils de Hodir pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 3); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte au Chevaliers de la Lame d'ebene pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 4); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte au Kirin Thor pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 5); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte avec l'Accord du Repos du Ver pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 14); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte a la Croisade d'Argent pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 6); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte aux Kalu'aks pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 7); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte aux Oracles pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 8); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte a la Tribu Frenecoeur pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 9); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte a l'Expedition de la Horde pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 12); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte a l'Expedition de la Bravoure pour < 10 > sceaux de champion" , GOSSIP_SENDER_MAIN, 10); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte a la Horde pour < 50 > sceaux de champion" , GOSSIP_SENDER_MAIN, 13); + pPlayer->ADD_GOSSIP_ITEM(6, "Devenir exalte a l'Alliance pour < 50 > sceaux de champion" , GOSSIP_SENDER_MAIN, 11); + pPlayer->ADD_GOSSIP_ITEM(6, "Quitter", GOSSIP_SENDER_MAIN, 15); + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID()); + return true; + } + + bool OnGossipSelect(Player *pPlayer, Creature *_Creature, uint32 sender, uint32 action ) + { + // Main menu + char msg[255]; + if (sender == GOSSIP_SENDER_MAIN) + { + QueryResult result ; + uint32 count = 0; + switch(action) + { + case 2:// Verdicte des cendres + { + //result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", pPlayer->GetGUID(), 1156); + // Field *fields = result->Fetch(); + // count = fields[0].GetUInt32(); + //pCreature->MonsterWhisper(count, pPlayer->GetGUID()); + //sLog->outString(count); + // sLog->outChat("pPlayer->GetReputation(1156) %u",pPlayer->GetReputation(1156)); + if (pPlayer->GetReputation( 1156) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1156, 42999); + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès du Verdict des cendres"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + // _Creature->MonsterTextEmote("Nombre de sceaux de champions requis insuffisant!", pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + } + case 3:// Fils de Hodir + { + // result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", pPlayer->GetGUID(), 1119); + // Field *fields = result->Fetch(); + // count = fields[0].GetUInt32(); + // sLog->outChat("[ADDON] Player %s sends: %u",count); + if (pPlayer->GetReputation(1119) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1119, 42999); + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès des Fils de Hodir"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + } + case 4:// Chevaliers de la Lame d''ébène + { + // result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", pPlayer->GetGUID(), 1098); + // Field *fields = result->Fetch(); + // count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(1098) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1098, 42999); + + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès des Chevaliers de la Lame d'ébène"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + } + case 5:// Kirin Thor + { + //result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 1090, pPlayer->GetGUID()); + //Field *fields = result->Fetch(); + //count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(1090) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1090, 42999); + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès des Kirin Thor"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + } + case 6:// La Croisade d''argent + { + //result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 1106, pPlayer->GetGUID()); + //Field *fields = result->Fetch(); + //count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(1106) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1106, 42999); + + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès de la Croisade d'Argent"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + } + case 7:// Les Kalu''aks + { + //result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 1073, pPlayer->GetGUID()); + // Field *fields = result->Fetch(); + // count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(1073) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1073, 42999); + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès des Kalu'aks"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + } + case 8:// Les Oracles + { + //result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 1105, pPlayer->GetGUID()); + //Field *fields = result->Fetch(); + //count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(1105) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1105, 42999); + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès des Oracles"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + } + case 9:// Tribu Frénécoeur + { + //result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 1104, pPlayer->GetGUID()); + + // Field *fields = result->Fetch(); + // count = fields[0].GetUInt32(); + + if (pPlayer->GetReputation(1104) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1104, 42999); + + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès de la Tribu Frénecoeur"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + } + case 10:// Expédition de la bravoure + { + + // result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 1050, pPlayer->GetGUID()); + //Field *fields = result->Fetch(); + //count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(1050) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1050, 99999); + + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès de l'Expédition de la Bravoure"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + } + + + case 11:// alliance + { + + //result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 72, pPlayer->GetGUID()); + //Field *fields = result->Fetch(); + //count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(72) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(72, 99999); + + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès de l'Alliance"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + + break; + } + + case 12: // Expédition de la horde + { + // result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 1052, pPlayer->GetGUID()); + //Field *fields = result->Fetch(); + //count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(1052) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1052, 99999); + + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès de l'expédition de la Horde"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + + } + + case 13: // Horde + { + // result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 1052, pPlayer->GetGUID()); + //Field *fields = result->Fetch(); + //count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(76) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(76, 99999); + + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès de la Horde"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + + } + + case 14: // Accord du repos du ver + { + // result = CharacterDatabase.PQuery("SELECT standing FROM character_reputation WHERE guid = %u and faction = %u", 1052, pPlayer->GetGUID()); + //Field *fields = result->Fetch(); + //count = fields[0].GetUInt32(); + if (pPlayer->GetReputation(1091) < 42000) + { + if (pPlayer->HasItemCount(EM_SCEAU_DE_CHAMPION, 10 )) + { + ChatHandler chathandler(pPlayer); + pPlayer->SetReputation(1091, 99999); + + pPlayer->DestroyItemCount(EM_SCEAU_DE_CHAMPION, 10 , true); + char mess[] = "Vous êtes maintenant exalté auprès de l'Accord du repos du ver"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + + + } + else + { + char mess[] = "Nombre de sceaux de champions requis insuffisant!"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + } + else + { + char mess[] = "Vous avez déjà cette réputation exalté"; + ConvertASCIIToUTF8(mess,strlen(mess)+1,msg); + _Creature->MonsterTextEmote(msg, pPlayer->GetGUID()); + } + break; + + } + + } + } + pPlayer->CLOSE_GOSSIP_MENU(); + return true; + } +}; + + +void AddSC_reputation() +{ + new npc_reputation(); +} diff --git a/src/server/scripts/World/npc_roinagas.cpp b/src/server/scripts/World/npc_roinagas.cpp new file mode 100644 index 0000000..23a05a9 --- /dev/null +++ b/src/server/scripts/World/npc_roinagas.cpp @@ -0,0 +1,157 @@ + +#include "ScriptPCH.h" + + + + +enum QuelNagasSpells +{ + SPELL_MAGIC_BARRIER = 38112, + SPELL_TOXIC_SPORES = 38575, + TOXIC_SPORES_TRIGGER = 22207, + SUMMONED_MURLOC = 27649, + SPELL_POISON_BOLT_VOLLEY = 54098, + SPELL_ENTANGLE = 38316, + SPELL_WRATH = 20698 +}; + +// Quel'Nagas yells +#define SAY_NAGAS_AGGRO "Qui ose déranger sa Majesté!" +#define SAY_NAGAS_SLAY "La souffrance ne fait que commencer!" +#define SAY_NAGAS_DEATH "Nos Lég...ions vous réduir...ons en C...en...dreeee..." +#define SAY_NAGAS_SUMMON "Vôtre Roi vous appel Murlocs!" + + +class npc_quel_nagas : public CreatureScript +{ +public: + npc_quel_nagas() : CreatureScript("npc_quel_nagas") { } + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_quel_nagasAI (pCreature); + } + + struct npc_quel_nagasAI : public ScriptedAI + { + npc_quel_nagasAI(Creature *pCreature) : ScriptedAI(pCreature){} + + uint32 Phase2Timer; + uint32 Phase1Timer; + uint32 SporeTimer; + uint32 PoisonTimer; + uint32 RootTimer; + bool Phase1; + + void Reset() + { + Phase2Timer = 60000; + Phase1Timer = 90000; + SporeTimer = 6000; + PoisonTimer = 15000; + RootTimer = 25000; + Phase1 = true; + } + + void EnterCombat(Unit* /*who*/) + { + me->MonsterYell(SAY_NAGAS_AGGRO, LANG_UNIVERSAL, 0); + } + + void KilledUnit(Unit* victim) + { + me->MonsterYell(SAY_NAGAS_SLAY, LANG_UNIVERSAL, 0); + } + + void JustDied(Unit* /*killer*/) + { + me->MonsterYell(SAY_NAGAS_DEATH, LANG_UNIVERSAL, 0); + } + + void UpdateAI(const uint32 uiDiff) + { + if (!UpdateVictim()) + return; + + // Summon Phase + if (Phase2Timer <= uiDiff) + { + Phase1 = false; + me->InterruptNonMeleeSpells(false); + me->SetReactState(REACT_PASSIVE); + me->AttackStop(); + me->RemoveAllAuras(); + // In Fase 2 evoca 3 Murloc + if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0)) + for (uint8 i = 1; i <= 3; i++) + { + me->SummonCreature(SUMMONED_MURLOC, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 60000); + } + me->AddAura(SPELL_MAGIC_BARRIER, me); + me->MonsterYell(SAY_NAGAS_SUMMON, LANG_UNIVERSAL, 0); + Phase2Timer = 90000; + } else Phase2Timer -= uiDiff; + + // Normal Phase + if (Phase1Timer <= uiDiff) + { + Phase1 = true; + me->InterruptNonMeleeSpells(false); + me->SetReactState(REACT_AGGRESSIVE); + me->RemoveAurasDueToSpell(SPELL_MAGIC_BARRIER); + DoZoneInCombat(); + if (me->getThreatManager().isThreatListEmpty()) + EnterEvadeMode(); + Phase1Timer = 90000; + } else Phase1Timer -= uiDiff; + + if (Phase1) + { + // Ogni 15 sec lancia una spora velenosa ai piedi di un player random + if (SporeTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + Creature* trig = me->SummonCreature(TOXIC_SPORES_TRIGGER, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 30000); + if (trig) + { + trig->setFaction(14); + trig->CastSpell(trig, SPELL_TOXIC_SPORES,true); + } + } + SporeTimer = 15000; + } else SporeTimer -= uiDiff; + + // Poison ad area ogni 10 sec + if (PoisonTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + DoCastAOE(SPELL_POISON_BOLT_VOLLEY); + PoisonTimer = 10000; + } else PoisonTimer -= uiDiff; + + // Radici su un target random ogni 25 sec + if (RootTimer <= uiDiff) + { + me->InterruptNonMeleeSpells(false); + if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, SPELL_ENTANGLE); + RootTimer = 25000; + } else RootTimer -= uiDiff; + } + + DoSpellAttackIfReady(SPELL_WRATH); + } + }; + +}; + + + +void AddSC_npc_roinagas() +{ + + new npc_quel_nagas; +} + diff --git a/src/server/scripts/World/npc_shadowmourn.cpp b/src/server/scripts/World/npc_shadowmourn.cpp new file mode 100644 index 0000000..50eb32c --- /dev/null +++ b/src/server/scripts/World/npc_shadowmourn.cpp @@ -0,0 +1,69 @@ +#include "ScriptPCH.h" + +#define TRANS_FAIL "Echec de la transaction, veuillez contacter un administrateur pour régler votre problème" + +class npc_shadowmourn : public CreatureScript +{ +public: + npc_shadowmourn() : CreatureScript("npc_shadowmourn") { } + + bool OnGossipHello(Player * pPlayer, Creature * pCreature) + { + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Acquérir Deuillelombre en échange de 900 points de vote et 50 000 points d'honneur en ayant une côte d'arene de 1400", GOSSIP_SENDER_MAIN, 1); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Quitter", GOSSIP_SENDER_MAIN, 2); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + return true; + } + void AddRewardToPlr(uint32 cnt, Player* pPlayer, Creature* pCreature, uint32 pointbefore) + { + pPlayer->AddItem(49623,1); + pPlayer->ModifyHonorPoints(-50000); + LoginDatabase.PExecute("UPDATE `vote_points` SET `vote_points` = %u WHERE `user_id` = %u", (pointbefore - cnt), pPlayer->GetSession()->GetAccountId()); + pCreature->MonsterWhisper("Félicitation, vous recevez Deuillelombre !", pPlayer->GetGUID()); + pPlayer->SaveToDB(); + } + + void ShowErrorDueToTrans(Player* pPlayer, Creature* pCreature, const char* error_val) + { + pCreature->MonsterWhisper(error_val, pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + + void SendDefaultMenu(Player *pPlayer, Creature *pCreature, uint32 action ) + { + uint32 count = 0; + + QueryResult result = LoginDatabase.PQuery("SELECT `vote_points` FROM `vote_points` WHERE `user_id` = %u", pPlayer->GetSession()->GetAccountId()); + + if (result) + { + Field *fields = result->Fetch(); + count = fields[0].GetUInt32(); + } + else + { + ShowErrorDueToTrans(pPlayer, pCreature, TRANS_FAIL); + return; + } + + if(action==1) + { + if((pPlayer->GetMaxPersonalArenaRatingRequirement(0) >= 1400) && (pPlayer->GetHonorPoints() >= 50000) && (count >= 900)) AddRewardToPlr(900, pPlayer, pCreature,count); + else pCreature->MonsterWhisper("Vous ne remplissez pas les conditions nécéssaires pour acquérir cette arme.",pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + else if (action == 2) pPlayer->CLOSE_GOSSIP_MENU(); + } + + bool OnGossipSelect(Player *pPlayer, Creature *pCreature, uint32 sender, uint32 action ) + { + // Main menu + if (sender == GOSSIP_SENDER_MAIN) SendDefaultMenu(pPlayer, pCreature, action ); + return true; + } +}; + +void AddSC_npc_shadowmourn() +{ + new npc_shadowmourn(); +} diff --git a/src/server/scripts/World/npc_taxi.cpp b/src/server/scripts/World/npc_taxi.cpp index 42376d2..e4a9af3 100644 --- a/src/server/scripts/World/npc_taxi.cpp +++ b/src/server/scripts/World/npc_taxi.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/npc_transfers.cpp b/src/server/scripts/World/npc_transfers.cpp new file mode 100644 index 0000000..9b2b74f --- /dev/null +++ b/src/server/scripts/World/npc_transfers.cpp @@ -0,0 +1,890 @@ + + +#include "ScriptPCH.h" + +enum Items +{ + /* WINTERGRASP LEVELUP ITEMS */ + + DAGGER_ONE_HAND_ATTACK_POWER = 42944, + AXE_TWO_HAND_ATTACK_POWER = 42943, + MACE_ONE_HAND_SPELL_POWER = 42948, + STAFF_TWO_HAND_SPELL_POWER = 42947, + TRINKET_SPELL_POWER = 42992, + SHOULDER_MAIL_ATTACK_POWER = 42950, + CHEST_MAIL_ATTACK_POWER = 48677, + BOW_RANGED_ATTACK_POWER = 42946, + SHOULDER_MAIL_SPELL_POWER = 42951, + CHEST_MAIL_SPELL_POWER = 48683, + CHEST_PLATE_ATTACK_POWER = 48685, + SHOULDER_PLATE_ATTACK_POWER = 42949, + CHEST_LEATHER_SPELL_POWER = 48687, + SHOULDER_LEATHER_SPELL_POWER = 42984, + MACE_TWO_HAND_ATTACK_POWER = 48718, + SHOULDER_LEATHER_ATTACK_POWER = 42952, + CHEST_LEATHER_ATTACK_POWER = 48689, + TRINKET_ATTACK_POWER = 42991, + SHOULDER_CLOTH_SPELL_POWER = 42985, + CHEST_CLOTH_SPELL_POWER = 48691, + SWORD_ONE_HAND_ATTACK_POWER = 42945, + MACE_ONEHAND_ATTACK_POWER = 48716, + + /* WINTERGRASP LEVELUP ITEMS */ + + /* SAVAGE SETS */ + + // DEATHKNIGHT + /*ITEM_DEATHKNIGHT_1 = 40779, + ITEM_DEATHKNIGHT_2 = 40799, + ITEM_DEATHKNIGHT_3 = 40817, + ITEM_DEATHKNIGHT_4 = 40837, + ITEM_DEATHKNIGHT_5 = 40857, + + // DRUID + ITEM_DRUID_1 = 41658, + ITEM_DRUID_2 = 41664, + ITEM_DRUID_3 = 41675, + ITEM_DRUID_4 = 41712, + ITEM_DRUID_5 = 41770, + + // HUNTER + ITEM_HUNTER_1 = 41084, + ITEM_HUNTER_2 = 41140, + ITEM_HUNTER_3 = 41154, + ITEM_HUNTER_4 = 41202, + ITEM_HUNTER_5 = 41214, + + // MAGE + ITEM_MAGE_1 = 41943, + ITEM_MAGE_2 = 41949, + ITEM_MAGE_3 = 41956, + ITEM_MAGE_4 = 41962, + ITEM_MAGE_5 = 41968, + + // PALADIN + ITEM_PALADIN_1 = 40780, + ITEM_PALADIN_2 = 40798, + ITEM_PALADIN_3 = 40818, + ITEM_PALADIN_4 = 40838, + ITEM_PALADIN_5 = 40858, + + // PRIEST + ITEM_PRIEST_1 = 41912, + ITEM_PRIEST_2 = 41918, + ITEM_PRIEST_3 = 41924, + ITEM_PRIEST_4 = 41930, + ITEM_PRIEST_5 = 41937, + + // ROGUE + ITEM_ROGUE_1 = 41643, + ITEM_ROGUE_2 = 41644, + ITEM_ROGUE_3 = 41645, + ITEM_ROGUE_4 = 41646, + ITEM_ROGUE_5 = 41647, + + // SHAMAN + ITEM_SHAMAN_1 = 41078, + ITEM_SHAMAN_2 = 41134, + ITEM_SHAMAN_3 = 41148, + ITEM_SHAMAN_4 = 41160, + ITEM_SHAMAN_5 = 41208, + + // WARLOCK + ITEM_WARLOCK_1 = 41990, + ITEM_WARLOCK_2 = 41996, + ITEM_WARLOCK_3 = 42002, + ITEM_WARLOCK_4 = 42008, + ITEM_WARLOCK_5 = 42014, + + // WARRIOR + ITEM_WARRIOR_1 = 40778, + ITEM_WARRIOR_2 = 40797, + ITEM_WARRIOR_3 = 40816, + ITEM_WARRIOR_4 = 40836, + ITEM_WARRIOR_5 = 40856,*/ + + /* SAVAGE SETS */ + + /* DEADLY SETS */ + + ITEM_DEATHKNIGHT_DAMAGE_MEELE_1 = 40791, + ITEM_DEATHKNIGHT_DAMAGE_MEELE_2 = 40811, + ITEM_DEATHKNIGHT_DAMAGE_MEELE_3 = 40830, + ITEM_DEATHKNIGHT_DAMAGE_MEELE_4 = 40851, + ITEM_DEATHKNIGHT_DAMAGE_MEELE_5 = 40871, + + // DRUID + ITEM_DRUID_DAMAGE_MEELE_1 = 41662, + ITEM_DRUID_DAMAGE_MEELE_2 = 41668, + ITEM_DRUID_DAMAGE_MEELE_3 = 41679, + ITEM_DRUID_DAMAGE_MEELE_4 = 41716, + ITEM_DRUID_DAMAGE_MEELE_5 = 41774, + + ITEM_DRUID_DAMAGE_SPELL_1 = 41282, + ITEM_DRUID_DAMAGE_SPELL_2 = 41294, + ITEM_DRUID_DAMAGE_SPELL_3 = 41305, + ITEM_DRUID_DAMAGE_SPELL_4 = 41317, + ITEM_DRUID_DAMAGE_SPELL_5 = 41328, + + ITEM_DRUID_HEAL_SPELL_1 = 41276, + ITEM_DRUID_HEAL_SPELL_2 = 41288, + ITEM_DRUID_HEAL_SPELL_3 = 41299, + ITEM_DRUID_HEAL_SPELL_4 = 41311, + ITEM_DRUID_HEAL_SPELL_5 = 41322, + + // HUNTER + ITEM_HUNTER_DAMAGE_RANGED_1 = 41088, + ITEM_HUNTER_DAMAGE_RANGED_2 = 41144, + ITEM_HUNTER_DAMAGE_RANGED_3 = 41158, + ITEM_HUNTER_DAMAGE_RANGED_4 = 41206, + ITEM_HUNTER_DAMAGE_RANGED_5 = 41218, + + // MAGE + ITEM_MAGE_DAMAGE_SPELL_1 = 41947, + ITEM_MAGE_DAMAGE_SPELL_2 = 41954, + ITEM_MAGE_DAMAGE_SPELL_3 = 41960, + ITEM_MAGE_DAMAGE_SPELL_4 = 41966, + ITEM_MAGE_DAMAGE_SPELL_5 = 41972, + + // PALADIN + ITEM_PALADIN_DAMAGE_MEELE_1 = 40792, + ITEM_PALADIN_DAMAGE_MEELE_2 = 40812, + ITEM_PALADIN_DAMAGE_MEELE_3 = 40831, + ITEM_PALADIN_DAMAGE_MEELE_4 = 40852, + ITEM_PALADIN_DAMAGE_MEELE_5 = 40872, + + ITEM_PALADIN_HEAL_SPELL_1 = 40910, + ITEM_PALADIN_HEAL_SPELL_2 = 40928, + ITEM_PALADIN_HEAL_SPELL_3 = 40934, + ITEM_PALADIN_HEAL_SPELL_4 = 40940, + ITEM_PALADIN_HEAL_SPELL_5 = 40964, + + // PRIEST + ITEM_PRIEST_DAMAGE_SPELL_1 = 41916, + ITEM_PRIEST_DAMAGE_SPELL_2 = 41922, + ITEM_PRIEST_DAMAGE_SPELL_3 = 41928, + ITEM_PRIEST_DAMAGE_SPELL_4 = 41935, + ITEM_PRIEST_DAMAGE_SPELL_5 = 41941, + + ITEM_PRIEST_HEAL_SPELL_1 = 41855, + ITEM_PRIEST_HEAL_SPELL_2 = 41860, + ITEM_PRIEST_HEAL_SPELL_3 = 41865, + ITEM_PRIEST_HEAL_SPELL_4 = 41870, + ITEM_PRIEST_HEAL_SPELL_5 = 41875, + + // ROGUE + ITEM_ROGUE_DAMAGE_MEELE_1 = 41651, + ITEM_ROGUE_DAMAGE_MEELE_2 = 41656, + ITEM_ROGUE_DAMAGE_MEELE_3 = 41673, + ITEM_ROGUE_DAMAGE_MEELE_4 = 41684, + ITEM_ROGUE_DAMAGE_MEELE_5 = 41768, + + // SHAMAN + ITEM_SHAMAN_DAMAGE_MEELE_1 = 41082, + ITEM_SHAMAN_DAMAGE_MEELE_2 = 41138, + ITEM_SHAMAN_DAMAGE_MEELE_3 = 41152, + ITEM_SHAMAN_DAMAGE_MEELE_4 = 41200, + ITEM_SHAMAN_DAMAGE_MEELE_5 = 41212, + + ITEM_SHAMAN_DAMAGE_SPELL_1 = 40995, + ITEM_SHAMAN_DAMAGE_SPELL_2 = 41008, + ITEM_SHAMAN_DAMAGE_SPELL_3 = 41020, + ITEM_SHAMAN_DAMAGE_SPELL_4 = 41034, + ITEM_SHAMAN_DAMAGE_SPELL_5 = 41045, + + ITEM_SHAMAN_HEAL_SPELL_1 = 40994, + ITEM_SHAMAN_HEAL_SPELL_2 = 41002, + ITEM_SHAMAN_HEAL_SPELL_3 = 41014, + ITEM_SHAMAN_HEAL_SPELL_4 = 41028, + ITEM_SHAMAN_HEAL_SPELL_5 = 41039, + + // WARLOCK + ITEM_WARLOCK_DAMAGE_SPELL_1 = 41994, + ITEM_WARLOCK_DAMAGE_SPELL_2 = 41999, + ITEM_WARLOCK_DAMAGE_SPELL_3 = 42006, + ITEM_WARLOCK_DAMAGE_SPELL_4 = 42012, + ITEM_WARLOCK_DAMAGE_SPELL_5 = 42018, + + // WARRIOR + ITEM_WARRIOR_DAMAGE_MEELE_1 = 40790, + ITEM_WARRIOR_DAMAGE_MEELE_2 = 40810, + ITEM_WARRIOR_DAMAGE_MEELE_3 = 40829, + ITEM_WARRIOR_DAMAGE_MEELE_4 = 40850, + ITEM_WARRIOR_DAMAGE_MEELE_5 = 40870, + + /* DEADLY SETS */ + + /* DEADLY WEAPONS */ + + ITEM_RANGED_LONGBOW = 42492, + ITEM_RANGED_GUN = 42487, + ITEM_RANGED_CROSSBOW = 42498, + ITEM_RANGED_THROWN = 42483, + ITEM_RANGED_WAND_HEAL = 42515, + ITEM_RANGED_WAND_DAMAGE = 42521, + ITEM_MEELE_DAGGER_MAIN = 42244, + ITEM_MEELE_DAGGER_OFF = 42257, + ITEM_SPELL_MACE_MAIN = 423540, + ITEM_SPELL_SHIELD_DAMAGE = 42566, + ITEM_SPELL_SHIELD_HEAL = 42572, + ITEM_MEELE_STAFF = 42392, + ITEM_SPELL_STAFF_HEAL = 42386, + ITEM_SPELL_STAFF_DAMAGE = 42366, + ITEM_MEELE_AXE_TWO_HAND = 42319, + ITEM_MEELE_MACE_TWO_HAND = 42324, + ITEM_MEELE_SWORD_TWO_HAND = 42334, + ITEM_MEELE_AXE_MAIN = 42210, + ITEM_MEELE_AXE_OFF = 42234, + ITEM_SPELL_DAGGER_MAIN = 42348, + + /* DEADLY WEAPONS */ + + /* ADITIONAL */ + + BAG_16_SLOTS = 4500 + + /* ADITIONAL */ +}; + +enum Gossip +{ + DEATH_KNIGHT_DAMAGE_MEELE = 1000, + DRUID_DAMAGE_MEELE = 1001, + DRUID_DAMAGE_SPELL = 1002, + DRUID_HEAL_SPELL = 1003, + HUNTER_DAMAGE_RANGED = 1004, + MAGE_DAMAGE_SPELL = 1005, + PALADIN_DAMAGE_MEELE = 1006, + PALADIN_HEAL_SPELL = 1007, + PRIEST_DAMAGE_SPELL = 1008, + PRIEST_HEAL_SPELL = 1009, + ROGUE_DAMAGE_MEELE = 1010, + SHAMAN_DAMAGE_MEELE = 1011, + SHAMAN_DAMAGE_SPELL = 1012, + SHAMAN_HEAL_SPELL = 1013, + WARLOCK_DAMAGE_SPELL = 1014, + WARRIOR_DAMAGE_MEELE = 1015 +}; +class custom_npc : public CreatureScript +{ +public: + custom_npc() : CreatureScript("custom_npc") { } + + bool Check_Transfer(uint32 Guid) + { + QueryResult result = CharacterDatabase.PQuery("SELECT npc_transfer FROM character_transfer WHERE guid = %u", Guid); + + if (result) + { +/* Field *fields = result->Fetch(); + uint32 Value = fields[0].GetUInt32(); + + if ( !Value ) return true; +*/ + return false; + } + else + { + return true; + } + } + + + bool OnGossipHello(Player* pPlayer, Creature* pCreature) + { + if(pPlayer->getLevel() < 20) + return false; + + if( Check_Transfer(pPlayer->GetGUID()) ) + { + if(pPlayer->isAlive()) + { + switch(pPlayer->getClass()) + { + case CLASS_DEATH_KNIGHT: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff CAC pour DK + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, DEATH_KNIGHT_DAMAGE_MEELE); + break; + case CLASS_DRUID: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff CAC pour Druide + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, DRUID_DAMAGE_MEELE); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff DPS pour Druide + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, DRUID_DAMAGE_SPELL); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff HEAL pour Druide + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, DRUID_HEAL_SPELL); + break; + case CLASS_HUNTER: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff DPS pour Chasseur + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, HUNTER_DAMAGE_RANGED); + break; + case CLASS_MAGE: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff DPS pour Mage + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, MAGE_DAMAGE_SPELL); + break; + case CLASS_PALADIN: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff CAC pour Paladin + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, PALADIN_DAMAGE_MEELE); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff HEAL pour Paladin + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, PALADIN_HEAL_SPELL); + break; + case CLASS_PRIEST: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff DPS pour Prêtre + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, PRIEST_DAMAGE_SPELL); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff HEAL pour Prêtre + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, PRIEST_HEAL_SPELL); + break; + case CLASS_ROGUE: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff CAC pour Voleur + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, ROGUE_DAMAGE_MEELE); + break; + case CLASS_SHAMAN: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff CAC pour Chaman + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, SHAMAN_DAMAGE_MEELE); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff DPS pour Chaman + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, SHAMAN_DAMAGE_SPELL); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff HEAL pour Chaman + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, SHAMAN_HEAL_SPELL); + break; + case CLASS_WARLOCK: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff DPS pour Démoniste + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, WARLOCK_DAMAGE_SPELL); + break; + case CLASS_WARRIOR: + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "(Je veux le Stuff CAC pour Guerrier + 9000 po) Vous serez téléporté à la Zone de Shop!", GOSSIP_SENDER_MAIN, WARRIOR_DAMAGE_MEELE); + break; + } + } + } + else + { + pCreature->MonsterWhisper("$N , Vous ne pouvez le faire qu'une seule fois, dommage ^__^", pPlayer->GetGUID()); + } + + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + return true; + } + + bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction) + { + pPlayer->PlayerTalkClass->ClearMenus(); + + switch(uiAction) + { + // DEATHKNIGHT DAMAGE MEELE + case DEATH_KNIGHT_DAMAGE_MEELE: + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_DEATHKNIGHT_DAMAGE_MEELE_1, 1); + pPlayer->AddItem(ITEM_DEATHKNIGHT_DAMAGE_MEELE_2, 1); + pPlayer->AddItem(ITEM_DEATHKNIGHT_DAMAGE_MEELE_3, 1); + pPlayer->AddItem(ITEM_DEATHKNIGHT_DAMAGE_MEELE_4, 1); + pPlayer->AddItem(ITEM_DEATHKNIGHT_DAMAGE_MEELE_5, 1); + pPlayer->AddItem(ITEM_MEELE_SWORD_TWO_HAND, 1); + } + break; + + // DRUID DAMAGE MEELE + case DRUID_DAMAGE_MEELE: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_DRUID_DAMAGE_MEELE_1, 1); + pPlayer->AddItem(ITEM_DRUID_DAMAGE_MEELE_2, 1); + pPlayer->AddItem(ITEM_DRUID_DAMAGE_MEELE_3, 1); + pPlayer->AddItem(ITEM_DRUID_DAMAGE_MEELE_4, 1); + pPlayer->AddItem(ITEM_DRUID_DAMAGE_MEELE_5, 1); + pPlayer->AddItem(ITEM_MEELE_STAFF, 1); + } + else + { + pPlayer->AddItem(MACE_TWO_HAND_ATTACK_POWER, 1); + pPlayer->AddItem(SHOULDER_LEATHER_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_LEATHER_ATTACK_POWER, 1); + } + pPlayer->AddItem(TRINKET_ATTACK_POWER, 1); + break; + + // DRUID DAMAGE SPELL + case DRUID_DAMAGE_SPELL: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_DRUID_DAMAGE_SPELL_1, 1); + pPlayer->AddItem(ITEM_DRUID_DAMAGE_SPELL_2, 1); + pPlayer->AddItem(ITEM_DRUID_DAMAGE_SPELL_3, 1); + pPlayer->AddItem(ITEM_DRUID_DAMAGE_SPELL_4, 1); + pPlayer->AddItem(ITEM_DRUID_DAMAGE_SPELL_5, 1); + pPlayer->AddItem(ITEM_SPELL_STAFF_DAMAGE, 1); + } + else + { + pPlayer->AddItem(STAFF_TWO_HAND_SPELL_POWER, 1); + pPlayer->AddItem(SHOULDER_LEATHER_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_LEATHER_SPELL_POWER, 1); + } + pPlayer->AddItem(TRINKET_SPELL_POWER, 1); + break; + + // DRUID HEAL SPELL + case DRUID_HEAL_SPELL: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_DRUID_HEAL_SPELL_1, 1); + pPlayer->AddItem(ITEM_DRUID_HEAL_SPELL_2, 1); + pPlayer->AddItem(ITEM_DRUID_HEAL_SPELL_3, 1); + pPlayer->AddItem(ITEM_DRUID_HEAL_SPELL_4, 1); + pPlayer->AddItem(ITEM_DRUID_HEAL_SPELL_5, 1); + pPlayer->AddItem(ITEM_SPELL_STAFF_HEAL, 1); + } + else + { + pPlayer->AddItem(STAFF_TWO_HAND_SPELL_POWER, 1); + pPlayer->AddItem(SHOULDER_LEATHER_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_LEATHER_SPELL_POWER, 1); + } + pPlayer->AddItem(TRINKET_SPELL_POWER, 1); + break; + + // HUNTER DAMAGE RANGED + case HUNTER_DAMAGE_RANGED: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() <= 39 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(AXE_TWO_HAND_ATTACK_POWER, 1); + pPlayer->AddItem(BOW_RANGED_ATTACK_POWER, 1); + pPlayer->AddItem(SHOULDER_LEATHER_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_LEATHER_ATTACK_POWER, 1); + } + if(pPlayer->getLevel() >= 40 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(AXE_TWO_HAND_ATTACK_POWER, 1); + pPlayer->AddItem(BOW_RANGED_ATTACK_POWER, 1); + pPlayer->AddItem(SHOULDER_MAIL_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_MAIL_ATTACK_POWER, 1); + + + } + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_HUNTER_DAMAGE_RANGED_1, 1); + pPlayer->AddItem(ITEM_HUNTER_DAMAGE_RANGED_2, 1); + pPlayer->AddItem(ITEM_HUNTER_DAMAGE_RANGED_3, 1); + pPlayer->AddItem(ITEM_HUNTER_DAMAGE_RANGED_4, 1); + pPlayer->AddItem(ITEM_HUNTER_DAMAGE_RANGED_5, 1); + pPlayer->AddItem(ITEM_MEELE_AXE_TWO_HAND, 1); + if(pPlayer->getRace() == RACE_DWARF || pPlayer->getRace() == RACE_TAUREN) + pPlayer->AddItem(ITEM_RANGED_GUN, 1); + else if(pPlayer->getRace() == RACE_DRAENEI) + pPlayer->AddItem(ITEM_RANGED_CROSSBOW, 1); + else + pPlayer->AddItem(ITEM_RANGED_LONGBOW, 1); + } + pPlayer->AddItem(TRINKET_ATTACK_POWER, 1); + break; + + // MAGE DAMAGE SPELL + case MAGE_DAMAGE_SPELL: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_MAGE_DAMAGE_SPELL_1, 1); + pPlayer->AddItem(ITEM_MAGE_DAMAGE_SPELL_2, 1); + pPlayer->AddItem(ITEM_MAGE_DAMAGE_SPELL_3, 1); + pPlayer->AddItem(ITEM_MAGE_DAMAGE_SPELL_4, 1); + pPlayer->AddItem(ITEM_MAGE_DAMAGE_SPELL_5, 1); + pPlayer->AddItem(ITEM_SPELL_STAFF_DAMAGE, 1); + pPlayer->AddItem(ITEM_RANGED_WAND_DAMAGE, 1); + } + else + { + pPlayer->AddItem(STAFF_TWO_HAND_SPELL_POWER, 1); + pPlayer->AddItem(SHOULDER_CLOTH_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_CLOTH_SPELL_POWER, 1); + } + pPlayer->AddItem(TRINKET_SPELL_POWER, 1); + break; + + // PALADIN DAMAGE MEELE + case PALADIN_DAMAGE_MEELE: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() <= 39 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(SHOULDER_MAIL_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_MAIL_ATTACK_POWER, 1); + pPlayer->AddItem(MACE_TWO_HAND_ATTACK_POWER, 1); + } + if(pPlayer->getLevel() >= 40 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(SHOULDER_PLATE_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_PLATE_ATTACK_POWER, 1); + pPlayer->AddItem(MACE_TWO_HAND_ATTACK_POWER, 1); + } + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_PALADIN_DAMAGE_MEELE_1, 1); + pPlayer->AddItem(ITEM_PALADIN_DAMAGE_MEELE_2, 1); + pPlayer->AddItem(ITEM_PALADIN_DAMAGE_MEELE_3, 1); + pPlayer->AddItem(ITEM_PALADIN_DAMAGE_MEELE_4, 1); + pPlayer->AddItem(ITEM_PALADIN_DAMAGE_MEELE_5, 1); + if(pPlayer->getRace() == RACE_HUMAN || pPlayer->getRace() == RACE_DWARF) + pPlayer->AddItem(ITEM_MEELE_MACE_TWO_HAND, 1); + else + pPlayer->AddItem(ITEM_MEELE_SWORD_TWO_HAND, 1); + } + pPlayer->AddItem(TRINKET_ATTACK_POWER, 1); + break; + + // PALADIN HEAL SPELL + case PALADIN_HEAL_SPELL: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() <= 39 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(SHOULDER_MAIL_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_MAIL_SPELL_POWER, 1); + pPlayer->AddItem(MACE_ONE_HAND_SPELL_POWER, 1); + } + if(pPlayer->getLevel() >= 40 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(SHOULDER_MAIL_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_MAIL_SPELL_POWER, 1); + pPlayer->AddItem(MACE_ONE_HAND_SPELL_POWER, 1); + } + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_PALADIN_HEAL_SPELL_1, 1); + pPlayer->AddItem(ITEM_PALADIN_HEAL_SPELL_2, 1); + pPlayer->AddItem(ITEM_PALADIN_HEAL_SPELL_3, 1); + pPlayer->AddItem(ITEM_PALADIN_HEAL_SPELL_4, 1); + pPlayer->AddItem(ITEM_PALADIN_HEAL_SPELL_5, 1); + pPlayer->AddItem(ITEM_SPELL_MACE_MAIN, 1); + pPlayer->AddItem(ITEM_SPELL_SHIELD_HEAL, 1); + } + pPlayer->AddItem(TRINKET_SPELL_POWER, 1); + break; + + // PRIEST DAMAGE SPELL + case PRIEST_DAMAGE_SPELL: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_PRIEST_DAMAGE_SPELL_1, 1); + pPlayer->AddItem(ITEM_PRIEST_DAMAGE_SPELL_2, 1); + pPlayer->AddItem(ITEM_PRIEST_DAMAGE_SPELL_3, 1); + pPlayer->AddItem(ITEM_PRIEST_DAMAGE_SPELL_4, 1); + pPlayer->AddItem(ITEM_PRIEST_DAMAGE_SPELL_5, 1); + pPlayer->AddItem(ITEM_SPELL_STAFF_DAMAGE, 1); + pPlayer->AddItem(ITEM_RANGED_WAND_DAMAGE, 1); + } + else + { + pPlayer->AddItem(SHOULDER_CLOTH_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_CLOTH_SPELL_POWER, 1); + pPlayer->AddItem(STAFF_TWO_HAND_SPELL_POWER, 1); + } + pPlayer->AddItem(TRINKET_SPELL_POWER, 1); + break; + + // PRIEST HEAL SPELL + case PRIEST_HEAL_SPELL: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_PRIEST_HEAL_SPELL_1, 1); + pPlayer->AddItem(ITEM_PRIEST_HEAL_SPELL_2, 1); + pPlayer->AddItem(ITEM_PRIEST_HEAL_SPELL_3, 1); + pPlayer->AddItem(ITEM_PRIEST_HEAL_SPELL_4, 1); + pPlayer->AddItem(ITEM_PRIEST_HEAL_SPELL_5, 1); + pPlayer->AddItem(ITEM_SPELL_STAFF_HEAL, 1); + pPlayer->AddItem(ITEM_RANGED_WAND_HEAL, 1); + } + else + { + pPlayer->AddItem(SHOULDER_CLOTH_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_CLOTH_SPELL_POWER, 1); + pPlayer->AddItem(STAFF_TWO_HAND_SPELL_POWER, 1); + } + pPlayer->AddItem(TRINKET_SPELL_POWER, 1); + break; + + // ROGUE DAMAGE MEELE + case ROGUE_DAMAGE_MEELE: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_ROGUE_DAMAGE_MEELE_1, 1); + pPlayer->AddItem(ITEM_ROGUE_DAMAGE_MEELE_2, 1); + pPlayer->AddItem(ITEM_ROGUE_DAMAGE_MEELE_3, 1); + pPlayer->AddItem(ITEM_ROGUE_DAMAGE_MEELE_4, 1); + pPlayer->AddItem(ITEM_ROGUE_DAMAGE_MEELE_5, 1); + pPlayer->AddItem(ITEM_MEELE_DAGGER_MAIN, 1); + pPlayer->AddItem(ITEM_MEELE_DAGGER_OFF, 1); + pPlayer->AddItem(ITEM_RANGED_THROWN, 1); + } + else + { + pPlayer->AddItem(SHOULDER_LEATHER_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_LEATHER_ATTACK_POWER, 1); + pPlayer->AddItem(DAGGER_ONE_HAND_ATTACK_POWER, 2); + + } + pPlayer->AddItem(TRINKET_ATTACK_POWER, 1); + break; + + + + // SHAMAN DAMAGE MEELE + case SHAMAN_DAMAGE_MEELE: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() <= 39 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(AXE_TWO_HAND_ATTACK_POWER, 1); + pPlayer->AddItem(SHOULDER_LEATHER_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_LEATHER_ATTACK_POWER, 1); + } + if(pPlayer->getLevel() >= 40 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(AXE_TWO_HAND_ATTACK_POWER, 1); + pPlayer->AddItem(SHOULDER_MAIL_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_MAIL_ATTACK_POWER, 1); + } + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_MEELE_1, 1); + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_MEELE_2, 1); + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_MEELE_3, 1); + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_MEELE_4, 1); + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_MEELE_5, 1); + pPlayer->AddItem(ITEM_MEELE_AXE_MAIN, 1); + pPlayer->AddItem(ITEM_MEELE_AXE_OFF, 1); + } + pPlayer->AddItem(TRINKET_ATTACK_POWER, 1); + break; + + // SHAMAN DAMAGE SPELL + case SHAMAN_DAMAGE_SPELL: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() <= 39 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(MACE_ONE_HAND_SPELL_POWER, 1); + pPlayer->AddItem(SHOULDER_LEATHER_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_LEATHER_SPELL_POWER, 1); + } + if(pPlayer->getLevel() >= 40 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(MACE_ONE_HAND_SPELL_POWER, 1); + pPlayer->AddItem(SHOULDER_MAIL_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_MAIL_SPELL_POWER, 1); + } + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_SPELL_1, 1); + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_SPELL_2, 1); + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_SPELL_3, 1); + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_SPELL_4, 1); + pPlayer->AddItem(ITEM_SHAMAN_DAMAGE_SPELL_5, 1); + pPlayer->AddItem(ITEM_SPELL_DAGGER_MAIN, 1); + pPlayer->AddItem(ITEM_SPELL_SHIELD_DAMAGE, 1); + } + pPlayer->AddItem(TRINKET_SPELL_POWER, 1); + break; + + // SHAMAN HEAL SPELL + case SHAMAN_HEAL_SPELL: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() <= 39 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(MACE_ONE_HAND_SPELL_POWER, 1); + pPlayer->AddItem(SHOULDER_LEATHER_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_LEATHER_SPELL_POWER, 1); + } + if(pPlayer->getLevel() >= 40 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(MACE_ONE_HAND_SPELL_POWER, 1); + pPlayer->AddItem(SHOULDER_MAIL_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_MAIL_SPELL_POWER, 1); + } + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_SHAMAN_HEAL_SPELL_1, 1); + pPlayer->AddItem(ITEM_SHAMAN_HEAL_SPELL_2, 1); + pPlayer->AddItem(ITEM_SHAMAN_HEAL_SPELL_3, 1); + pPlayer->AddItem(ITEM_SHAMAN_HEAL_SPELL_4, 1); + pPlayer->AddItem(ITEM_SHAMAN_HEAL_SPELL_5, 1); + pPlayer->AddItem(ITEM_SPELL_MACE_MAIN, 1); + pPlayer->AddItem(ITEM_SPELL_SHIELD_HEAL, 1); + } + pPlayer->AddItem(TRINKET_SPELL_POWER, 1); + break; + + // WARLOCK DAMAGE SPELL + case WARLOCK_DAMAGE_SPELL: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_WARLOCK_DAMAGE_SPELL_1, 1); + pPlayer->AddItem(ITEM_WARLOCK_DAMAGE_SPELL_2, 1); + pPlayer->AddItem(ITEM_WARLOCK_DAMAGE_SPELL_3, 1); + pPlayer->AddItem(ITEM_WARLOCK_DAMAGE_SPELL_4, 1); + pPlayer->AddItem(ITEM_WARLOCK_DAMAGE_SPELL_5, 1); + pPlayer->AddItem(ITEM_SPELL_STAFF_DAMAGE, 1); + pPlayer->AddItem(ITEM_RANGED_WAND_DAMAGE, 1); + } + else + { + pPlayer->AddItem(SHOULDER_CLOTH_SPELL_POWER, 1); + pPlayer->AddItem(CHEST_CLOTH_SPELL_POWER, 1); + pPlayer->AddItem(STAFF_TWO_HAND_SPELL_POWER, 1); + } + pPlayer->AddItem(TRINKET_SPELL_POWER, 1); + break; + + // WARRIOR DAMAGE MEELE + case WARRIOR_DAMAGE_MEELE: + pPlayer->AddItem(BAG_16_SLOTS, 2); + if(pPlayer->getLevel() <= 39 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(MACE_TWO_HAND_ATTACK_POWER, 1); + pPlayer->AddItem(SHOULDER_MAIL_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_MAIL_ATTACK_POWER, 1); + } + if(pPlayer->getLevel() >= 40 && pPlayer->getLevel() != 80) + { + pPlayer->AddItem(MACE_TWO_HAND_ATTACK_POWER, 1); + pPlayer->AddItem(SHOULDER_PLATE_ATTACK_POWER, 1); + pPlayer->AddItem(CHEST_PLATE_ATTACK_POWER, 1); + } + if(pPlayer->getLevel() == 80) + { + pPlayer->AddItem(ITEM_WARRIOR_DAMAGE_MEELE_1, 1); + pPlayer->AddItem(ITEM_WARRIOR_DAMAGE_MEELE_2, 1); + pPlayer->AddItem(ITEM_WARRIOR_DAMAGE_MEELE_3, 1); + pPlayer->AddItem(ITEM_WARRIOR_DAMAGE_MEELE_4, 1); + pPlayer->AddItem(ITEM_WARRIOR_DAMAGE_MEELE_5, 1); + pPlayer->AddItem(ITEM_RANGED_THROWN, 1); + if(pPlayer->getRace() == RACE_ORC || pPlayer->getRace() == RACE_DWARF) + pPlayer->AddItem(ITEM_MEELE_AXE_TWO_HAND, 1); + else if(pPlayer->getRace() == RACE_TAUREN) + pPlayer->AddItem(ITEM_MEELE_MACE_TWO_HAND, 1); + else + pPlayer->AddItem(ITEM_MEELE_SWORD_TWO_HAND, 1); + } + pPlayer->AddItem(TRINKET_ATTACK_POWER, 1); + break; + + default: + pCreature->MonsterSay("Nieco sa posralo", LANG_UNIVERSAL, 0); + break; + } + + CharacterDatabase.PExecute("INSERT INTO character_transfer (guid, npc_transfer) VALUES ('%u', '1')", pPlayer->GetGUID()); + //CharacterDatabase.PExecute("UPDATE character_transfer SET npc_transfer=0 WHERE guid = %u",pPlayer->GetGUID()); + TeleportPlayerAndGiveMoney(pPlayer); + + return true; + } + + /* PORT */ + void TeleportPlayerAndGiveMoney(Player * pPlayer) + { + if (pPlayer->isAlive() && pPlayer->getLevel() >= 1 && pPlayer->getLevel() <= 10) + { + if(pPlayer->GetTeamId() == TEAM_ALLIANCE) + { + pPlayer->ModifyMoney(50000); + pPlayer->TeleportTo(0, -8830.18f, 623.96f, 93.89f, 3.8f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + else + { + pPlayer->ModifyMoney(50000); + pPlayer->TeleportTo(1, 1629.36f, -4373.39f, 31.26f, 3.5f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + } + + if (pPlayer->isAlive() && pPlayer->getLevel() >= 11 && pPlayer->getLevel() <= 20) + { + if(pPlayer->GetTeamId() == TEAM_ALLIANCE) + { + pPlayer->ModifyMoney(250000); + pPlayer->TeleportTo(0, -8830.18f, 623.96f, 93.89f, 3.8f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + else + { + pPlayer->ModifyMoney(250000); + pPlayer->TeleportTo(1, 1629.36f, -4373.39f, 31.26f, 3.5f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + } + + if (pPlayer->isAlive() && pPlayer->getLevel() >= 21 && pPlayer->getLevel() <= 30) + { + if(pPlayer->GetTeamId() == TEAM_ALLIANCE) + { + pPlayer->ModifyMoney(1000000); + pPlayer->TeleportTo(0, -8830.18f, 623.96f, 93.89f, 3.8f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + else + { + pPlayer->ModifyMoney(1000000); + pPlayer->TeleportTo(1, 1629.36f, -4373.39f, 31.26f, 3.5f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + } + + if (pPlayer->isAlive() && pPlayer->getLevel() >= 31 && pPlayer->getLevel() <= 40) + { + if(pPlayer->GetTeamId() == TEAM_ALLIANCE) + { + pPlayer->ModifyMoney(2500000); + pPlayer->TeleportTo(0, -8830.18f, 623.96f, 93.89f, 3.8f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + else + { + pPlayer->ModifyMoney(2500000); + pPlayer->TeleportTo(1, 1629.36f, -4373.39f, 31.26f, 3.5f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + } + + if (pPlayer->isAlive() && pPlayer->getLevel() >= 41 && pPlayer->getLevel() <= 50) + { + if(pPlayer->GetTeamId() == TEAM_ALLIANCE) + { + pPlayer->ModifyMoney(5000000); + pPlayer->TeleportTo(0, -8830.18f, 623.96f, 93.89f, 3.8f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + else + { + pPlayer->ModifyMoney(5000000); + pPlayer->TeleportTo(1, 1629.36f, -4373.39f, 31.26f, 3.5f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + } + + if (pPlayer->isAlive() && pPlayer->getLevel() >= 51 && pPlayer->getLevel() <= 60) + { + if(pPlayer->GetTeamId() == TEAM_ALLIANCE) + { + pPlayer->ModifyMoney(10000000); + pPlayer->TeleportTo(0, -8830.18f, 623.96f, 93.89f, 3.8f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + else + { + pPlayer->ModifyMoney(10000000); + pPlayer->TeleportTo(1, 1629.36f, -4373.39f, 31.26f, 3.5f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + } + + if (pPlayer->isAlive() && pPlayer->getLevel() >= 61 && pPlayer->getLevel() <= 70) + { + pPlayer->ModifyMoney(40000000); + pPlayer->TeleportTo(530, -1815.10f, 5333.19f, -12.43f, 1.24f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + + if (pPlayer->isAlive() && pPlayer->getLevel() >= 71 && pPlayer->getLevel() <= 80) + { + pPlayer->ModifyMoney(90000000); + pPlayer->TeleportTo(571, 5778.92f, 607.65f, 565.30f, 4.04f, 0); + pPlayer->CLOSE_GOSSIP_MENU(); + } + } +}; + +void AddSC_custom_npc() +{ + new custom_npc(); +} diff --git a/src/server/scripts/World/npc_welcome.cpp b/src/server/scripts/World/npc_welcome.cpp new file mode 100644 index 0000000..ba6122b --- /dev/null +++ b/src/server/scripts/World/npc_welcome.cpp @@ -0,0 +1,62 @@ +#include "ScriptPCH.h" + + + +/******************************************************* + * npc_welcome + *******************************************************/ + +class npc_welcome : public CreatureScript +{ +public: + npc_welcome() : CreatureScript("npc_welcome") { } + + bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) + { + if (uiSender == GOSSIP_SENDER_MAIN) SendDefaultMenu_npc_welcome(pPlayer, pCreature, uiAction); + return true; + } + + bool OnGossipHello(Player* pPlayer, Creature* pCreature) + { + pPlayer->ADD_GOSSIP_ITEM( 1, " - Lettre de Bienvenue" , GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + pPlayer->ADD_GOSSIP_ITEM( 0, " - Channel général" , GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + pPlayer->ADD_GOSSIP_ITEM( 5, " - Capacité Serveur" , GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + pPlayer->ADD_GOSSIP_ITEM( 3, " - Règles" , GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); + pPlayer->ADD_GOSSIP_ITEM( 8, " - Instance" , GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); + pPlayer->SEND_GOSSIP_MENU(100010, pCreature->GetGUID()); + + return true; + } + + void SendDefaultMenu_npc_welcome(Player* pPlayer, Creature* pCreature, uint32 uiAction) + { + switch (uiAction) + { + case GOSSIP_ACTION_INFO_DEF + 1: //Lettre de Bienvenue + pPlayer->SEND_GOSSIP_MENU(100005, pCreature->GetGUID()); + break; + case GOSSIP_ACTION_INFO_DEF + 2: //Channel général + pPlayer->SEND_GOSSIP_MENU(100006, pCreature->GetGUID()); + break; + case GOSSIP_ACTION_INFO_DEF + 3: //Capacité Serveur + pPlayer->SEND_GOSSIP_MENU(100007, pCreature->GetGUID()); + break; + case GOSSIP_ACTION_INFO_DEF + 4: //Règles + pPlayer->SEND_GOSSIP_MENU(100008, pCreature->GetGUID()); + break; + case GOSSIP_ACTION_INFO_DEF + 5: //Instance + pPlayer->SEND_GOSSIP_MENU(100009, pCreature->GetGUID()); + break; + + pPlayer->CLOSE_GOSSIP_MENU(); + } + } + +}; + + +void AddSC_npc_welcome() +{ + new npc_welcome(); +} diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index c752674..26a3b1b 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -1941,19 +1941,6 @@ class npc_lightwell : public CreatureScript { DoCast(me, 59907, false); // Spell for Lightwell Charges } - - // Treatment for avoid combat misbehave - void EnterEvadeMode() - { - if (!me->isAlive()) - return; - - me->DeleteThreatList(); - me->CombatStop(true); - me->ResetPlayerDamageReq(); - } - - }; CreatureAI* GetAI(Creature* pCreature) const @@ -2948,4 +2935,4 @@ void AddSC_npcs_special() new npc_snip_snagglebolt; new npc_fire_elemental; new npc_earth_elemental; -} +} \ No newline at end of file diff --git a/src/server/scripts/World/pilgrims_event.cpp b/src/server/scripts/World/pilgrims_event.cpp index 427fcfa..454d0cd 100644 --- a/src/server/scripts/World/pilgrims_event.cpp +++ b/src/server/scripts/World/pilgrims_event.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/scripts/World/premiere_connexion.cpp b/src/server/scripts/World/premiere_connexion.cpp new file mode 100644 index 0000000..c2cf8b8 --- /dev/null +++ b/src/server/scripts/World/premiere_connexion.cpp @@ -0,0 +1,23 @@ +#include "ScriptPCH.h" + + +class bienvenue_players_script : public PlayerScript +{ + public: + bienvenue_players_script() : PlayerScript("bienvenue_players_script") { } + + char msg[255]; + void OnLogin(Player* player) + { + if (player->GetLevelPlayedTime() <= 90) + { + sprintf(msg, "Bonjour %s ! Toutes l'équipe d'Aeternam-Warlord te souhaite la bienvenue sur le Royaume. Pour rejoindre le channel général tapes /join 5 ", player->GetName()); + sWorld->SendWorldText(LANG_AUTO_BROADCAST, msg); + } + } +}; + +void AddSC_bienvenue() +{ + new bienvenue_players_script; +} diff --git a/src/server/scripts/World/professionnpc.cpp b/src/server/scripts/World/professionnpc.cpp new file mode 100644 index 0000000..26e99b3 --- /dev/null +++ b/src/server/scripts/World/professionnpc.cpp @@ -0,0 +1,372 @@ +/* Copyright (C) 2006 - 2009 ScriptDev2 + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* ScriptData +SDName: professionnpc +SD%Complete: 100 +SDComment: Profession Master +SDCategory: NPC +EndScriptData */ + +#include "ScriptPCH.h" +#include "Configuration/Config.h" + + +class professionnpc : public CreatureScript +{ +public: + professionnpc() : CreatureScript("professionnpc") { } + + bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) + { + pPlayer->PlayerTalkClass->ClearMenus(); + // Main menu + if (uiSender == GOSSIP_SENDER_MAIN) + SendDefaultMenu_ProfessionNPC(pPlayer, pCreature, uiAction); + + return true; + } + + bool OnGossipHello(Player* pPlayer, Creature* pCreature) + { + + + if(sConfig->GetBoolDefault("ProfessionNPC.OnlyGMs", false)) // If ProfessionNPC.OnlyGMs is enabled in trinitycore.conf + if (pPlayer->GetSession()->GetSecurity() == SEC_PLAYER) + { + pCreature->MonsterWhisper("Désolé je ne peux vendre que au Maitre du jeu.", pPlayer->GetGUID()); + return true; + } + + bool EnableProfessions = sConfig->GetBoolDefault("ProfessionNPC.EnableProfessions", true); + bool EnableSecondarySkills = sConfig->GetBoolDefault("ProfessionNPC.EnableSecondarySkills", true); + + // Main Menu for Alliance + if (pPlayer->GetTeam() == ALLIANCE) + { + // Check config if "Professions" is enabled or not + if(EnableProfessions) + pPlayer->ADD_GOSSIP_ITEM( 7, "Proféssions ->" , GOSSIP_SENDER_MAIN, 1000); + // Check config if "Secondary Skills" is enabled or not + if(EnableSecondarySkills) + pPlayer->ADD_GOSSIP_ITEM( 7, "Métiers secondaires ->" , GOSSIP_SENDER_MAIN, 2000); + } + else // Main Menu for Horde + { + // Check config if "Professions" is enabled or not + if(EnableProfessions) + pPlayer->ADD_GOSSIP_ITEM( 7, "Proféssions ->" , GOSSIP_SENDER_MAIN, 1000); + // Check config if "Secondary Skills" is enabled or not + if(EnableSecondarySkills) + pPlayer->ADD_GOSSIP_ITEM( 7, "Métier secondaire ->" , GOSSIP_SENDER_MAIN, 2000); + } + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); + + return true; + } + +void SendDefaultMenu_ProfessionNPC(Player* pPlayer, Creature* pCreature, uint32 uiAction) +{ + +// Not allow in combat +if (pPlayer->isInCombat()) +{ + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->MonsterSay("Vous êtes en combat !", LANG_UNIVERSAL, NULL); + return; +} + + + bool EnableProfessions = sConfig->GetBoolDefault("ProfessionNPC.EnableProfessions", true); + bool EnableSecondarySkills = sConfig->GetBoolDefault("ProfessionNPC.EnableSecondarySkills", true); + +//Mony Check +if (pPlayer->GetMoney() < (sConfig->GetFloatDefault("SkillGoldCost",0))) +{ + pPlayer->CLOSE_GOSSIP_MENU(); + pCreature->MonsterWhisper("Vous n'avez pas assez d'argent.", pPlayer->GetGUID()); + return; +} + +switch(uiAction) +{ + +case 1000: //Profession + pPlayer->ADD_GOSSIP_ITEM( 5, "Alchimie." , GOSSIP_SENDER_MAIN, 1001); + pPlayer->ADD_GOSSIP_ITEM( 5, "Forge." , GOSSIP_SENDER_MAIN, 1002); + pPlayer->ADD_GOSSIP_ITEM( 5, "Enchanteur." , GOSSIP_SENDER_MAIN, 1003); + pPlayer->ADD_GOSSIP_ITEM( 5, "Ingénieure." , GOSSIP_SENDER_MAIN, 1004); + pPlayer->ADD_GOSSIP_ITEM( 5, "Herboriste." , GOSSIP_SENDER_MAIN, 1005); + pPlayer->ADD_GOSSIP_ITEM( 5, "Calligraphie." , GOSSIP_SENDER_MAIN, 1006); + pPlayer->ADD_GOSSIP_ITEM( 5, "Joaillerie." , GOSSIP_SENDER_MAIN, 1007); + pPlayer->ADD_GOSSIP_ITEM( 5, "Travail du cuir." , GOSSIP_SENDER_MAIN, 1008); + pPlayer->ADD_GOSSIP_ITEM( 5, "Minage." , GOSSIP_SENDER_MAIN, 1009); + pPlayer->ADD_GOSSIP_ITEM( 5, "Dépeçage." , GOSSIP_SENDER_MAIN, 1010); + pPlayer->ADD_GOSSIP_ITEM( 5, "Tailleur." , GOSSIP_SENDER_MAIN, 1011); + pPlayer->ADD_GOSSIP_ITEM( 7, "<- Menu Principal" , GOSSIP_SENDER_MAIN, 3000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 2000: //Secondary Skills + pPlayer->ADD_GOSSIP_ITEM( 5, "Cuisine." , GOSSIP_SENDER_MAIN, 2001); + pPlayer->ADD_GOSSIP_ITEM( 5, "Secouriste." , GOSSIP_SENDER_MAIN, 2002); + pPlayer->ADD_GOSSIP_ITEM( 5, "Pêche." , GOSSIP_SENDER_MAIN, 2003); + //pPlayer->ADD_GOSSIP_ITEM( 5, "Riding." , GOSSIP_SENDER_MAIN, 2004); + pPlayer->ADD_GOSSIP_ITEM( 7, "<- Menu principal" , GOSSIP_SENDER_MAIN, 3000); + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +case 3000: //Back To Main Menu + // Main Menu for Alliance + if (pPlayer->GetTeam() == ALLIANCE) + { + // Check config if "Professions" is enabled or not + if(EnableProfessions) + pPlayer->ADD_GOSSIP_ITEM( 7, "Proféssions ->" , GOSSIP_SENDER_MAIN, 1000); + // Check config if "Secondary Skills" is enabled or not + if(EnableSecondarySkills) + pPlayer->ADD_GOSSIP_ITEM( 7, "Métiers secondaires ->" , GOSSIP_SENDER_MAIN, 2000); + } + else // Main Menu for Horde + { + // Check config if "Professions" is enabled or not + if(EnableProfessions) + pPlayer->ADD_GOSSIP_ITEM( 7, "Proféssions ->" , GOSSIP_SENDER_MAIN, 1000); + // Check config if "Secondary Skills" is enabled or not + if(EnableSecondarySkills) + pPlayer->ADD_GOSSIP_ITEM( 7, "Métier secondaires ->" , GOSSIP_SENDER_MAIN, 2000); + } + + pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID()); +break; + +//////////////////////////////////////////////////Professions/////////////////////////////////////////////////////////////// + +case 1001: // Alchemy + if(!pPlayer->UpdateSkill(171,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(171,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1002: // Blacksmithing + if(!pPlayer->UpdateSkill(164,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(164,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1003: // Enchanting + if(!pPlayer->UpdateSkill(333,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(333,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1004: // Engineering + if(!pPlayer->UpdateSkill(202,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(202,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1005: // Herbalism + if(!pPlayer->UpdateSkill(182,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(182,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1006: // Inscription + if(!pPlayer->UpdateSkill(773,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(773,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1007: // Jewelcrafting + if(!pPlayer->UpdateSkill(755,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(755,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1008: // Leatherworking + if(!pPlayer->UpdateSkill(165,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(165,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1009: // Mining + if(!pPlayer->UpdateSkill(186,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(186,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1010: // Skinning + if(!pPlayer->UpdateSkill(393,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(393,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 1011: // Tailoring + if(!pPlayer->UpdateSkill(197,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(197,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +//////////////////////////////////////////////////Secondary Skills/////////////////////////////////////////////////////////////// + +case 2001: // Cooking + if(!pPlayer->UpdateSkill(185,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(185,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 2002: // First Aid + if(!pPlayer->UpdateSkill(129,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(129,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +case 2003: // Fishing + if(!pPlayer->UpdateSkill(356,0)) + { + pCreature->MonsterWhisper("Vous n'avez pas appris le métier ou alors vous avez déja la valeur maximal pour ce métier $C.", pPlayer->GetGUID()); + OnGossipHello(pPlayer, pCreature); + return; + } + + pPlayer->UpdateSkill(356,(sConfig->GetFloatDefault("SkillPoints",0))); + pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); + pPlayer->CLOSE_GOSSIP_MENU(); +break; + +//case 2004: // Riding +// if(!pPlayer->UpdateSkill(,0)) +// { +// pCreature->MonsterWhisper("You don't have this skill or you allready have the maximum skill value $C.", pPlayer->GetGUID()); +// OnGossipHello(pPlayer, pCreature); +// return; +// } +// +// pPlayer->UpdateSkill(,(sConfig->GetFloatDefault("SkillPoints",0))); +// pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("SkillGoldCost",0))); +// pPlayer->CLOSE_GOSSIP_MENU(); +//break; + + pPlayer->CLOSE_GOSSIP_MENU(); + +} // end of switch +} //end of function + + +}; + + + + +void AddSC_professionnpc() +{ + new professionnpc(); +} diff --git a/src/server/scripts/World/pvps_system.cpp b/src/server/scripts/World/pvps_system.cpp new file mode 100644 index 0000000..adc02a2 --- /dev/null +++ b/src/server/scripts/World/pvps_system.cpp @@ -0,0 +1,478 @@ +#include "ScriptPCH.h" +#include "Config.h" +#include "Group.h" +extern CharacterDatabaseWorkerPool CharacterDatabase; + +/////////////////////////////////////////////////////////////////////// +/////////////////////// CONFIG ///////////////////////////// +///////////////////////////////////////////////////////////////////// + +float Version = 2.50f; //Don't touch this. +bool PvPSystemEnabled = false; //Set to false if you want to disable the PvP System +bool OnlyInBattlegrounds = true; //Set to true if you want to enable this only in battlegrounds. +bool LooseTokenOnPvPDeath = false; //Set to true if you want the victim to loose tokens when the victim dies. +int32 AmountOfItemsYouWantTheVictimToLoose = 1; //Amount of items you want the victim to loose when victim dies. +bool AddTokenOnPvPKill = true; //Set to false if you don't want the killer to be rewarded. +int32 ItemReward = 20558; //The ItemID of the reward. +int32 AmountOfRewardsOnKillStreak[5] = { 1, 3, 5, 7, 10 }; //With how many items you want to reward the killer when he slays the victim. +int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 50; //Name speaks for It self. +const int32 KillerStreak1 = 10; +const int32 KillerStreak2 = 30; +const int32 KillerStreak3 = 100; +const int32 KillerStreak4 = 200; +const int32 KillerStreak5 = 300; +int32 KillStreaks[5] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4, KillerStreak5 }; +int32 amounthonor = 124; +/////////////////////////////////////////////////////////////////// +/////////////////////// END //////////////////////////// +///////////////////////////////////////////////////////////////// + +struct SystemInfo +{ + uint32 KillStreak; + uint32 LastGUIDKill; + uint8 KillCount; +}; + +static std::map KillingStreak; + +class System_OnPvPKill : public PlayerScript +{ + public: + System_OnPvPKill() : PlayerScript("System_OnPvPKill") {} + + + void OnPVPKill(Player *pKiller, Player *pVictim) + { + if(PvPSystemEnabled == false) + { + return; + } + else if(PvPSystemEnabled == true) + { + uint32 kGUID; + uint32 vGUID; + char msg[500]; + kGUID = pKiller->GetGUID(); + vGUID = pVictim->GetGUID(); + + if(kGUID == vGUID) + { + return; + } + + if(KillingStreak[kGUID].LastGUIDKill == vGUID) + { + KillingStreak[kGUID].KillCount++; + KillingStreak[vGUID].KillCount = 1; + pKiller->AddItem(ItemReward, 1); + + if(LooseTokenOnPvPDeath == true) + pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false); + } + if(KillingStreak[kGUID].LastGUIDKill != vGUID) + { + KillingStreak[kGUID].KillCount = 1; + KillingStreak[vGUID].KillCount = 1; + } + + if(KillingStreak[kGUID].KillCount == HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim) + { + return; + } + + if(OnlyInBattlegrounds == true) + { + if(!pKiller->GetMap()->IsBattleground()) + return; + } + + KillingStreak[kGUID].KillStreak++; + KillingStreak[vGUID].KillStreak = 0; + KillingStreak[kGUID].LastGUIDKill = vGUID; + KillingStreak[vGUID].LastGUIDKill = 0; + if(AddTokenOnPvPKill == true) + pKiller->AddItem(ItemReward, 1); + if(LooseTokenOnPvPDeath == true) + pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false); + + switch(KillingStreak[kGUID].KillStreak) + { + case KillerStreak1: + sprintf(msg, " %s a tué %s et est à %u kill d'affilés! Un nouveau guerrier est née ! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[1]); + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg); + pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]); + break; + + case KillerStreak2: + sprintf(msg, " %s a tué %s et est à %u kill d'affilés! Il aime le goût du Sang ! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[2]); + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg); + pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]); + break; + + case KillerStreak3: + sprintf(msg, " %s a tué %s et est à %u kill d'affilés! Il est prit de Folie Meurtrière ! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[3]); + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg); + pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]); + break; + + case KillerStreak4: + sprintf(msg, " %s a tué %s et est à %u kill d'affilés! Il est prit de Frénésie Meurtrière ! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[4]); + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg); + pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]); + break; + + case KillerStreak5: + sprintf(msg, " %s a tué %s et est à %u kill d'affilés et gagne le titre ASSASSIN! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]); + CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(95); + sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg); + pKiller->SetTitle(titleInfo); + pKiller->AddItem(19902,1); + KillingStreak[kGUID].KillStreak = 0; + break; + } + } + } +}; + + +class flagffa : public CreatureScript +{ +public: + flagffa() : CreatureScript("flagffa") {} + + bool OnGossipHello(Player* player, Creature* creature) + { + MapRefManager const &playerList = player->GetMap()->GetPlayers(); + bool hasAura = false; + + if (!playerList.isEmpty()) + { + for (MapRefManager::const_iterator i = playerList.begin(); i != playerList.end(); ++i) + { + if (Player *iplayer = i->getSource()) + { + if (iplayer->GetAreaId() == 4163 && iplayer->HasAura(45450)) + hasAura = true; + } + } + + if(!hasAura) + { + SpellEntry const *spellInfo = sSpellStore.LookupEntry(58549); + Group* grp = player->GetGroup(); + if (grp) + for (GroupReference *itr = grp->GetFirstMember(); itr != NULL; itr = itr->next()) + { + Player *playergrp = itr->getSource(); + if (playergrp) + { + playergrp->RemoveAurasDueToSpell(58549); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,playergrp,playergrp); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,playergrp,playergrp); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,playergrp,playergrp); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,playergrp,playergrp); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,playergrp,playergrp); + playergrp->CastSpell(player,45450,true); + } + creature->MonsterYell("Un nouveau groupe d'Assassin est née !",LANG_UNIVERSAL,player->GetGUID()); + } + else + { + player->RemoveAurasDueToSpell(58549); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,player,player); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,player,player); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,player,player); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,player,player); + Aura::TryCreate(spellInfo, MAX_EFFECT_MASK,player,player); + player->CastSpell(player,45450,true); + creature->MonsterYell("Un nouvel Assassin est née !",LANG_UNIVERSAL,player->GetGUID()); + } + } + } + return true; + } +}; + +/* +class logoutffa : public PlayerScript +{ +public: + logoutffa() : PlayerScript("logoutffa") {} + + void OnLogout(Player* player) + { + player->RemoveAurasDueToSpell(45450); + player->RemoveAurasDueToSpell(28747); + player->RemoveAurasDueToSpell(58549); + } +}; + +class loginoutffa : public PlayerScript +{ +public: + loginoutffa() : PlayerScript("loginoutffa") {} + + void OnLogin(Player* player) + { + if (player->HasAura(45450)) + { + player->RemoveAurasDueToSpell(45450); + player->RemoveAurasDueToSpell(58549); + } + Field* fields; + QueryResult result = CharacterDatabase.PQuery("SELECT morph FROM character_morph WHERE guid=%u", player->GetGUID()); + if(result && sConfig->GetBoolDefault("Morph.Perm", true)) + { + fields = result->Fetch(); + if(fields[0].GetUInt32() != 0) + player->SetDisplayId(fields[0].GetUInt32()); + } + } +}; +*/ + + +class pnjobsarena : public CreatureScript +{ +public: + pnjobsarena() : CreatureScript("pnjobsarena") {} + + bool OnGossipHello(Player* player, Creature* creature) + { + player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_CHAT, "Je voudrais observer une arène (Entrez le nom du Joueur).", GOSSIP_SENDER_MAIN, 1, "", 0, true); + player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); + return true; + } + bool OnGossipSelectCode(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction, const char* code) + { + pPlayer->PlayerTalkClass->ClearMenus(); + if (uiSender == GOSSIP_SENDER_MAIN) + { + switch (uiAction) + { + case 1: + { + QueryResult targetresult = CharacterDatabase.PQuery("SELECT `guid` FROM `characters` WHERE `name` ='%s'", code); + if(targetresult) + { + uint64 target_guid; + Field *fields = targetresult->Fetch(); + target_guid = fields[0].GetUInt32(); + Player * target = sObjectMgr->GetPlayer(target_guid); + if (pPlayer->GetGUID() != target_guid) + { + if (target) + { + if (target->InArena() && !target->isGameMaster()) + { + if (!target->HasAura(44521)) + { + // only allow if gm mode is on + if (!pPlayer->isGameMaster()) + { + sLog->outError("Erreur ne peux pas etre tp normalement"); + } + // if both players are in different bgs + else if (pPlayer->GetBattlegroundId() && pPlayer->GetBattlegroundId() != target->GetBattlegroundId()) + pPlayer->LeaveBattleground(false); // Note: should be changed so _player gets no Deserter debuff + + // all's well, set bg id + // when porting out from the bg, it will be reset to 0 + pPlayer->SetBattlegroundId(target->GetBattlegroundId(), target->GetBattlegroundTypeId()); + // remember current position as entry point for return at bg end teleportation + if (!pPlayer->GetMap()->IsBattlegroundOrArena()) + pPlayer->SetBattlegroundEntryPoint(); + float x,y,z; + target->GetContactPoint(pPlayer,x,y,z); + pPlayer->TeleportTo(target->GetMapId(), x, y, z, pPlayer->GetAngle(target), TELE_TO_GM_MODE); + pPlayer->SetPhaseMask(target->GetPhaseMask(), true); + pPlayer->SetVisible(false); + pPlayer->CastSpell(pPlayer,1852,true); + pPlayer->CastSpell(pPlayer,28747,true); + pPlayer->setFaction(35); + if (Pet* pet = pPlayer->GetPet()) + { + pet->setFaction(35); + pet->getHostileRefManager().setOnlineOfflineState(false); + } + pPlayer->RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP); + pPlayer->ResetContestedPvP(); + + pPlayer->getHostileRefManager().setOnlineOfflineState(false); + pPlayer->CombatStopWithPets(); + pPlayer->CLOSE_GOSSIP_MENU(); + } + else + pCreature->MonsterWhisper("L'arène de votre cible n'a pas encore commencée",pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Votre cible n'est pas en arène.",pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Votre cible n'est pas connectée.",pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Vous ne pouvez pas vous cibler vous même.",pPlayer->GetGUID()); + } + else + pCreature->MonsterWhisper("Vous n'avez rien rempli ou votre cible n'éxiste pas.",pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + return true; + } + } + } + return false; + } +}; + +class titrearene : public CreatureScript +{ +public: + titrearene() : CreatureScript("titrearene") { } + + bool OnGossipHello(Player * pPlayer, Creature * _Creature) + { + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Titre Gladiateur [1250 de côte requis]", GOSSIP_SENDER_MAIN, 1); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Titre Gladiateur Impitoyable [1500 de côte requis]", GOSSIP_SENDER_MAIN, 2); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Titre Gladiateur Vengeur [1700 de côte requis]", GOSSIP_SENDER_MAIN, 3); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Titre Gladiateur Furieux + Monture + Tabard [1800 de côte requis]", GOSSIP_SENDER_MAIN, 4); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Titre Gladiateur Brutal + Monture [1950 de côte requis]", GOSSIP_SENDER_MAIN, 5); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Titre Gladiateur Implacable + Monture + Tabard [2050 de côte requis]", GOSSIP_SENDER_MAIN, 6); + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Titre Gladiateur Courroucé + Monture + Tabard [2350 de côte requis]", GOSSIP_SENDER_MAIN, 7); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(_Creature), _Creature->GetGUID()); + return true; + } + + void SendDefaultMenu(Player *pPlayer, Creature *_Creature, uint32 action ) + { + switch(action) + { + case 1: + { + uint32 rate = pPlayer->GetMaxPersonalArenaRatingRequirement(0); + if (rate >= 1250) + { + CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(45); + pPlayer->SetTitle(titleInfo); + _Creature->MonsterWhisper("Félicitation, vous recevez votre nouveau titre !",pPlayer->GetGUID()); + } + else + _Creature->MonsterWhisper("Vous n'avez pas 1250 de côte d'arène",pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + break; + case 2: + { + uint32 rate = pPlayer->GetMaxPersonalArenaRatingRequirement(0); + if (rate >= 1500) + { + CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(62); + pPlayer->SetTitle(titleInfo); + _Creature->MonsterWhisper("Félicitation, vous recevez votre nouveau titre !",pPlayer->GetGUID()); + } + else + _Creature->MonsterWhisper("Vous n'avez pas 1500 de côte d'arène",pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + break; + case 3: + { + uint32 rate = pPlayer->GetMaxPersonalArenaRatingRequirement(0); + if (rate >= 1700) + { + CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(71); + pPlayer->SetTitle(titleInfo); + _Creature->MonsterWhisper("Félicitation, vous recevez votre nouveau titre !",pPlayer->GetGUID()); + } + else + _Creature->MonsterWhisper("Vous n'avez pas 1700 de côte d'arène",pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + break; + case 4: + { + uint32 rate = pPlayer->GetMaxPersonalArenaRatingRequirement(0); + if (rate >= 1800) + { + CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(167); + pPlayer->SetTitle(titleInfo); + pPlayer->AddItem(45983,1); + pPlayer->AddItem(46171,1); + _Creature->MonsterWhisper("Félicitation, vous recevez votre nouveau titre ainsi que la monture et le tabard furieux !",pPlayer->GetGUID()); + } + else + _Creature->MonsterWhisper("Vous n'avez pas 1800 de côte d'arène",pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + break; + case 5: + { + uint32 rate = pPlayer->GetMaxPersonalArenaRatingRequirement(0); + if (rate >= 1950) + { + CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(80); + pPlayer->SetTitle(titleInfo); + pPlayer->AddItem(54811,1); + _Creature->MonsterWhisper("Félicitation, vous recevez votre nouveau titre ainsi que le Palefroi Célèste !",pPlayer->GetGUID()); + } + else + _Creature->MonsterWhisper("Vous n'avez pas 1950 de côte d'arène",pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + break; + case 6: + { + uint32 rate = pPlayer->GetMaxPersonalArenaRatingRequirement(0); + if (rate >= 2050) + { + CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(169); + pPlayer->SetTitle(titleInfo); + pPlayer->AddItem(49086,1); + pPlayer->AddItem(47840,1); + _Creature->MonsterWhisper("Félicitation, vous recevez votre nouveau titre ainsi que la monture et le tabard Implacable !",pPlayer->GetGUID()); + } + else + _Creature->MonsterWhisper("Vous n'avez pas 2050 de côte d'arène",pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + break; + case 7: + { + uint32 rate = pPlayer->GetMaxPersonalArenaRatingRequirement(0); + if (rate >= 2350) + { + CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(177); + pPlayer->SetTitle(titleInfo); + pPlayer->AddItem(51534,1); + pPlayer->AddItem(50435,1); + _Creature->MonsterWhisper("Félicitation, vous recevez votre nouveau titre ainsi que la monture et le tabard Couroucé !",pPlayer->GetGUID()); + } + else + _Creature->MonsterWhisper("Vous n'avez pas 2350 de côte d'arène",pPlayer->GetGUID()); + pPlayer->CLOSE_GOSSIP_MENU(); + } + break; + } + } + + bool OnGossipSelect(Player *pPlayer, Creature *_Creature, uint32 sender, uint32 action ) + { + // Main menu + if (sender == GOSSIP_SENDER_MAIN) + SendDefaultMenu(pPlayer, _Creature, action ); + + return true; + + } +}; + +void AddSC_Reset_Pvp() +{ + new System_OnPvPKill; + new flagffa; + //new logoutffa; + //new loginoutffa; + new pnjobsarena; + new titrearene(); +} diff --git a/src/server/shared/CMakeLists.txt b/src/server/shared/CMakeLists.txt index fae83fb..d0e69c0 100644 --- a/src/server/shared/CMakeLists.txt +++ b/src/server/shared/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Common.cpp b/src/server/shared/Common.cpp index c22c3ad..1607edf 100644 --- a/src/server/shared/Common.cpp +++ b/src/server/shared/Common.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h index eb2834e..533791c 100644 --- a/src/server/shared/Common.h +++ b/src/server/shared/Common.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -150,10 +150,12 @@ enum TimeConstants enum AccountTypes { SEC_PLAYER = 0, - SEC_MODERATOR = 1, - SEC_GAMEMASTER = 2, - SEC_ADMINISTRATOR = 3, - SEC_CONSOLE = 4 // must be always last in list, accounts must have less security level always also + SEC_VIP = 1, + SEC_MODERATOR = 2, + SEC_GAMEMASTER = 3, + SEC_ADMINISTRATOR = 4, + + SEC_CONSOLE = 8 // must be always last in list, accounts must have less security level always also }; enum LocaleConstant diff --git a/src/server/shared/CompilerDefs.h b/src/server/shared/CompilerDefs.h index fb50eb3..9971eaa 100644 --- a/src/server/shared/CompilerDefs.h +++ b/src/server/shared/CompilerDefs.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Configuration/Config.cpp b/src/server/shared/Configuration/Config.cpp index c78b39e..0bf8378 100644 --- a/src/server/shared/Configuration/Config.cpp +++ b/src/server/shared/Configuration/Config.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Cryptography/ARC4.cpp b/src/server/shared/Cryptography/ARC4.cpp index 5833c07..ab30723 100644 --- a/src/server/shared/Cryptography/ARC4.cpp +++ b/src/server/shared/Cryptography/ARC4.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/ARC4.h b/src/server/shared/Cryptography/ARC4.h index 1704506..0e51aff 100644 --- a/src/server/shared/Cryptography/ARC4.h +++ b/src/server/shared/Cryptography/ARC4.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/Authentication/AuthCrypt.cpp b/src/server/shared/Cryptography/Authentication/AuthCrypt.cpp index 698c017..e4fe88e 100644 --- a/src/server/shared/Cryptography/Authentication/AuthCrypt.cpp +++ b/src/server/shared/Cryptography/Authentication/AuthCrypt.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/Authentication/AuthCrypt.h b/src/server/shared/Cryptography/Authentication/AuthCrypt.h index de10044..cf70f54 100644 --- a/src/server/shared/Cryptography/Authentication/AuthCrypt.h +++ b/src/server/shared/Cryptography/Authentication/AuthCrypt.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/Authentication/WardenKeyGeneration.h b/src/server/shared/Cryptography/Authentication/WardenKeyGeneration.h index f9905f0..366cbec 100644 --- a/src/server/shared/Cryptography/Authentication/WardenKeyGeneration.h +++ b/src/server/shared/Cryptography/Authentication/WardenKeyGeneration.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/BigNumber.cpp b/src/server/shared/Cryptography/BigNumber.cpp index 6f765b4..4dc2c9c 100644 --- a/src/server/shared/Cryptography/BigNumber.cpp +++ b/src/server/shared/Cryptography/BigNumber.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/BigNumber.h b/src/server/shared/Cryptography/BigNumber.h index 724b27a..59e2c9b 100644 --- a/src/server/shared/Cryptography/BigNumber.h +++ b/src/server/shared/Cryptography/BigNumber.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/HMACSHA1.cpp b/src/server/shared/Cryptography/HMACSHA1.cpp index f68dd83..847c052 100644 --- a/src/server/shared/Cryptography/HMACSHA1.cpp +++ b/src/server/shared/Cryptography/HMACSHA1.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/HMACSHA1.h b/src/server/shared/Cryptography/HMACSHA1.h index 09d9066..8e506c5 100644 --- a/src/server/shared/Cryptography/HMACSHA1.h +++ b/src/server/shared/Cryptography/HMACSHA1.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/SHA1.cpp b/src/server/shared/Cryptography/SHA1.cpp index 270aa36..d96dbe5 100644 --- a/src/server/shared/Cryptography/SHA1.cpp +++ b/src/server/shared/Cryptography/SHA1.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Cryptography/SHA1.h b/src/server/shared/Cryptography/SHA1.h index 7082615..1a8c11e 100644 --- a/src/server/shared/Cryptography/SHA1.h +++ b/src/server/shared/Cryptography/SHA1.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/DataStores/DBCFileLoader.cpp b/src/server/shared/DataStores/DBCFileLoader.cpp index 0444394..75d02f5 100644 --- a/src/server/shared/DataStores/DBCFileLoader.cpp +++ b/src/server/shared/DataStores/DBCFileLoader.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/DataStores/DBCFileLoader.h b/src/server/shared/DataStores/DBCFileLoader.h index d5e1342..1520cae 100644 --- a/src/server/shared/DataStores/DBCFileLoader.h +++ b/src/server/shared/DataStores/DBCFileLoader.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/DataStores/DBCStore.h b/src/server/shared/DataStores/DBCStore.h index f9d1450..339da3e 100644 --- a/src/server/shared/DataStores/DBCStore.h +++ b/src/server/shared/DataStores/DBCStore.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Database/AdhocStatement.cpp b/src/server/shared/Database/AdhocStatement.cpp index af25e18..d8e1b64 100644 --- a/src/server/shared/Database/AdhocStatement.cpp +++ b/src/server/shared/Database/AdhocStatement.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/AdhocStatement.h b/src/server/shared/Database/AdhocStatement.h index 3c29f00..75ab31e 100644 --- a/src/server/shared/Database/AdhocStatement.h +++ b/src/server/shared/Database/AdhocStatement.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/DatabaseEnv.h b/src/server/shared/Database/DatabaseEnv.h index 7c005eb..56ebe7e 100644 --- a/src/server/shared/Database/DatabaseEnv.h +++ b/src/server/shared/Database/DatabaseEnv.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/DatabaseWorker.cpp b/src/server/shared/Database/DatabaseWorker.cpp index dd26799..618af87 100644 --- a/src/server/shared/Database/DatabaseWorker.cpp +++ b/src/server/shared/Database/DatabaseWorker.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/DatabaseWorker.h b/src/server/shared/Database/DatabaseWorker.h index 822ad4b..06c1fc3 100644 --- a/src/server/shared/Database/DatabaseWorker.h +++ b/src/server/shared/Database/DatabaseWorker.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h index 9f1a0f4..dddcf21 100644 --- a/src/server/shared/Database/DatabaseWorkerPool.h +++ b/src/server/shared/Database/DatabaseWorkerPool.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/Field.cpp b/src/server/shared/Database/Field.cpp index e5d4d10..a641d54 100644 --- a/src/server/shared/Database/Field.cpp +++ b/src/server/shared/Database/Field.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/Field.h b/src/server/shared/Database/Field.h index e24a000..108c350 100644 --- a/src/server/shared/Database/Field.h +++ b/src/server/shared/Database/Field.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 76a7744..b4ad81c 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index d3160cf..d039a78 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Database/Implementation/LoginDatabase.cpp b/src/server/shared/Database/Implementation/LoginDatabase.cpp index b5492e2..b93fcc6 100644 --- a/src/server/shared/Database/Implementation/LoginDatabase.cpp +++ b/src/server/shared/Database/Implementation/LoginDatabase.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Database/Implementation/LoginDatabase.h b/src/server/shared/Database/Implementation/LoginDatabase.h index 7e2c1d0..20d6907 100644 --- a/src/server/shared/Database/Implementation/LoginDatabase.h +++ b/src/server/shared/Database/Implementation/LoginDatabase.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Database/Implementation/WorldDatabase.cpp b/src/server/shared/Database/Implementation/WorldDatabase.cpp index 1ee3763..2620ba0 100644 --- a/src/server/shared/Database/Implementation/WorldDatabase.cpp +++ b/src/server/shared/Database/Implementation/WorldDatabase.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Database/Implementation/WorldDatabase.h b/src/server/shared/Database/Implementation/WorldDatabase.h index a473314..6b5a51f 100644 --- a/src/server/shared/Database/Implementation/WorldDatabase.h +++ b/src/server/shared/Database/Implementation/WorldDatabase.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/MySQLConnection.cpp b/src/server/shared/Database/MySQLConnection.cpp index 98d30ee..9b7c49a 100644 --- a/src/server/shared/Database/MySQLConnection.cpp +++ b/src/server/shared/Database/MySQLConnection.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/MySQLConnection.h b/src/server/shared/Database/MySQLConnection.h index 505428f..24959ea 100644 --- a/src/server/shared/Database/MySQLConnection.h +++ b/src/server/shared/Database/MySQLConnection.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/MySQLThreading.h b/src/server/shared/Database/MySQLThreading.h index f0263ff..44009eb 100644 --- a/src/server/shared/Database/MySQLThreading.h +++ b/src/server/shared/Database/MySQLThreading.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp index f98cdca..82ecb12 100644 --- a/src/server/shared/Database/PreparedStatement.cpp +++ b/src/server/shared/Database/PreparedStatement.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/PreparedStatement.h b/src/server/shared/Database/PreparedStatement.h index b2a72c2..67c3a9a 100644 --- a/src/server/shared/Database/PreparedStatement.h +++ b/src/server/shared/Database/PreparedStatement.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/QueryHolder.cpp b/src/server/shared/Database/QueryHolder.cpp index 2639967..cf7b8aa 100644 --- a/src/server/shared/Database/QueryHolder.cpp +++ b/src/server/shared/Database/QueryHolder.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/QueryHolder.h b/src/server/shared/Database/QueryHolder.h index 42ee02d..e2f1c31 100644 --- a/src/server/shared/Database/QueryHolder.h +++ b/src/server/shared/Database/QueryHolder.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/QueryResult.cpp b/src/server/shared/Database/QueryResult.cpp index a3890b7..a122ab6 100644 --- a/src/server/shared/Database/QueryResult.cpp +++ b/src/server/shared/Database/QueryResult.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/QueryResult.h b/src/server/shared/Database/QueryResult.h index fbc53df..f1b670f 100644 --- a/src/server/shared/Database/QueryResult.h +++ b/src/server/shared/Database/QueryResult.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/SQLOperation.h b/src/server/shared/Database/SQLOperation.h index 5a98096..3d52515 100644 --- a/src/server/shared/Database/SQLOperation.h +++ b/src/server/shared/Database/SQLOperation.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/Transaction.cpp b/src/server/shared/Database/Transaction.cpp index e9b7fbb..3529099 100644 --- a/src/server/shared/Database/Transaction.cpp +++ b/src/server/shared/Database/Transaction.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Database/Transaction.h b/src/server/shared/Database/Transaction.h index e60633b..cc5f68a 100644 --- a/src/server/shared/Database/Transaction.h +++ b/src/server/shared/Database/Transaction.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Debugging/Errors.h b/src/server/shared/Debugging/Errors.h index a84bc72..5067d3c 100644 --- a/src/server/shared/Debugging/Errors.h +++ b/src/server/shared/Debugging/Errors.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Define.h b/src/server/shared/Define.h index 9529419..7b11bc4 100644 --- a/src/server/shared/Define.h +++ b/src/server/shared/Define.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Dynamic/LinkedList.h b/src/server/shared/Dynamic/LinkedList.h index a810077..1cd143c 100644 --- a/src/server/shared/Dynamic/LinkedList.h +++ b/src/server/shared/Dynamic/LinkedList.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Dynamic/LinkedReference/RefManager.h b/src/server/shared/Dynamic/LinkedReference/RefManager.h index f2e00c5..97d0f6d 100644 --- a/src/server/shared/Dynamic/LinkedReference/RefManager.h +++ b/src/server/shared/Dynamic/LinkedReference/RefManager.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Dynamic/LinkedReference/Reference.h b/src/server/shared/Dynamic/LinkedReference/Reference.h index cea5f4d..eb17cda 100644 --- a/src/server/shared/Dynamic/LinkedReference/Reference.h +++ b/src/server/shared/Dynamic/LinkedReference/Reference.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Dynamic/TypeContainer.h b/src/server/shared/Dynamic/TypeContainer.h index a31ea2e..7deb237 100644 --- a/src/server/shared/Dynamic/TypeContainer.h +++ b/src/server/shared/Dynamic/TypeContainer.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Dynamic/TypeContainerFunctions.h b/src/server/shared/Dynamic/TypeContainerFunctions.h index 6af227c..6a3d4c7 100644 --- a/src/server/shared/Dynamic/TypeContainerFunctions.h +++ b/src/server/shared/Dynamic/TypeContainerFunctions.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Dynamic/TypeContainerVisitor.h b/src/server/shared/Dynamic/TypeContainerVisitor.h index 4493bf1..6034b03 100644 --- a/src/server/shared/Dynamic/TypeContainerVisitor.h +++ b/src/server/shared/Dynamic/TypeContainerVisitor.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp index ffcc001..cfef5fa 100644 --- a/src/server/shared/Logging/Log.cpp +++ b/src/server/shared/Logging/Log.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index 861d44d..f5116da 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index 2b9a36d..9c9632d 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2012 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Packets/WorldPacket.h b/src/server/shared/Packets/WorldPacket.h index eab87c0..2ea3a97 100644 --- a/src/server/shared/Packets/WorldPacket.h +++ b/src/server/shared/Packets/WorldPacket.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/PrecompiledHeaders/sharedPCH.cpp b/src/server/shared/PrecompiledHeaders/sharedPCH.cpp index c3fed3e..a639c1d 100644 --- a/src/server/shared/PrecompiledHeaders/sharedPCH.cpp +++ b/src/server/shared/PrecompiledHeaders/sharedPCH.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/PrecompiledHeaders/sharedPCH.h b/src/server/shared/PrecompiledHeaders/sharedPCH.h index 1dd3cc7..0d25eb8 100644 --- a/src/server/shared/PrecompiledHeaders/sharedPCH.h +++ b/src/server/shared/PrecompiledHeaders/sharedPCH.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/SystemConfig.h b/src/server/shared/SystemConfig.h index 8df2df8..b340116 100644 --- a/src/server/shared/SystemConfig.h +++ b/src/server/shared/SystemConfig.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -15,5 +15,5 @@ #include "Define.h" #include "revision.h" -#define _FULLVERSION "Myth Core 3.3.5a v12.54." _REVISION " Hash: " _HASH "" +#define _FULLVERSION "Myth Core 3.3.5a v12.53." _REVISION " Hash: " _HASH "" #endif \ No newline at end of file diff --git a/src/server/shared/Threading/Callback.h b/src/server/shared/Threading/Callback.h index 11e86c8..ddced70 100644 --- a/src/server/shared/Threading/Callback.h +++ b/src/server/shared/Threading/Callback.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Threading/LockedQueue.h b/src/server/shared/Threading/LockedQueue.h index 9aa7586..5615359 100644 --- a/src/server/shared/Threading/LockedQueue.h +++ b/src/server/shared/Threading/LockedQueue.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Threading/Threading.cpp b/src/server/shared/Threading/Threading.cpp index 7d5465b..4251b05 100644 --- a/src/server/shared/Threading/Threading.cpp +++ b/src/server/shared/Threading/Threading.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/UnicodeConvert.h b/src/server/shared/UnicodeConvert.h new file mode 100644 index 0000000..48ef1f6 --- /dev/null +++ b/src/server/shared/UnicodeConvert.h @@ -0,0 +1,334 @@ + +#ifndef UnicodeConvertH +#define UnicodeConvertH + + +typedef unsigned short UTF16; +typedef unsigned int UTF32; +typedef unsigned char UTF8; +const UTF16 HI_SURROGATE_START = 0xD800; +const UTF16 LO_SURROGATE_START = 0xDC00; + +enum EncodeType{ EncUTF8,EncUTF16BE,EncUTF16LE,EncUTF32BE, EncUTF32LE,EncASCII, EncUNKNOWN}; +//enum UTFFormat{ fUTF8, fUTF16LE,fUTF16BE, fUTF32BE,fUTF32LE}; + + +inline int ASCIIToCodePoint(unsigned char*StreamCode,unsigned int*CodePoint, int*LengthStreamCode) +{ + *CodePoint=(unsigned int)StreamCode[0]; + *LengthStreamCode=1; + return 1; +} + +inline int CodePointToASCII(unsigned char*Stream,unsigned int CodePoint, int*LengthStreamCode) +{ + *Stream=(unsigned char)CodePoint; + *LengthStreamCode=1; + return 1; +} +inline int CodePointToUTF8(unsigned char*Stream,unsigned int CodePoint, int*LengthStreamCode) +{ + if(CodePoint<0x80) //code sur un octet + { + *Stream=(char)CodePoint; + *LengthStreamCode=1; + return 1; + } + else if(CodePoint<0x1000)// code sur 2 octets + { + *Stream=(unsigned char)( (((CodePoint>>6)&0x1F)|0xC0)); + Stream++; + *Stream=(unsigned char) ((CodePoint&0x3F)|0x80); + *LengthStreamCode=2; + return 1; + } + else if(CodePoint<0x10000)// code sur 3 octets + { + *Stream=(unsigned char)( (((CodePoint>>12)&0xF)|0xE0)); + Stream++; + *Stream=(unsigned char) (((CodePoint>>6)&0x3F)|0x80); + Stream++; + *Stream=(unsigned char) ((CodePoint&0x3F)|0x80); + *LengthStreamCode=3; + return 1; + } + else if(CodePoint<0x11000)// code sur 4 octets + { + *Stream=(unsigned char)( (((CodePoint>>18)&0x7)|0xF0)); + Stream++; + *Stream=(unsigned char) (((CodePoint>>12)&0x3F)|0x80); + Stream++; + *Stream=(unsigned char) (((CodePoint>>6)&0x3F)|0x80); + Stream++; + *Stream=(unsigned char) ((CodePoint&0x3F)|0x80); + *LengthStreamCode=4; + return 1; + } + else return 0; // code inconnu +} + + +inline int UTF8ToCodePoint(unsigned char*StreamCode,unsigned int*CodePoint, int*LengthStreamCode) +{ + int _tmp1,_tmp2,_tmp3,_tmp4; + + + if( ( int) StreamCode[0]<0x80) // code sur 1 octet + { + *CodePoint=(int)StreamCode[0]; + *LengthStreamCode=1; + return 1; + } + else if( (( int)*StreamCode>0xBF)&&((int)*StreamCode<0xE0)) //code sur 2 octets + { + if( ((int)StreamCode[1]>0x7F)&&((int)StreamCode[1]<0xC0)) + { + _tmp1=(((int)StreamCode[0])&0x1F)<<6; + _tmp2=(((int)StreamCode[1])&0x3F); + *CodePoint=_tmp1|_tmp2; + *LengthStreamCode=2; + return 1; + } + return 0; + } + else if( ((int)*StreamCode>0xDF)&&((int)*StreamCode<0xF0)) //code sur 3 octets + { + if( ((int)StreamCode[1]>0x7F)&&((int)StreamCode[1]<0xC0)) + if( ((int)StreamCode[2]>0x7F)&&((int)StreamCode[2]<0xC0)) + { + _tmp1=(((int)StreamCode[0])&0xF)<<12; + _tmp2=(((int)StreamCode[1])&0x3F)<<6; + _tmp3=(((int)StreamCode[2])&0x3F); + *CodePoint=_tmp1|_tmp2|_tmp3; + *LengthStreamCode=3; + return 1; + } + return 0; + } + else if( ((int)*StreamCode>0xEF)&&((int)*StreamCode<0xF8)) //code sur 4 octets + { + if( ((int)StreamCode[1]>0x7F)&&((int)StreamCode[1]<0xC0)) + if( ((int)StreamCode[2]>0x7F)&&((int)StreamCode[2]<0xC0)) + if( ((int)StreamCode[3]>0x7F)&&((int)StreamCode[3]<0xC0)) + { + _tmp1=(((int)StreamCode[0])&0x7)<<18; + _tmp2=(((int)StreamCode[1])&0x3F)<<12; + _tmp3=(((int)StreamCode[2])&0x3F)<<6; + _tmp4=(((int)StreamCode[3])&0x3F); + *CodePoint=_tmp1|_tmp2|_tmp3|_tmp4; + *LengthStreamCode=4; + return 1; + } + return 0; + } + + return 0; + +} + + + +inline int CodePointToUTF16_BE(unsigned char*StreamCode,unsigned int CodePoint, int*LengthStreamCode) +{ + + if(CodePoint<=0xD7FF||((CodePoint>=0xE000)&&(CodePoint<=0xFFFD))) //2 octets + { + + StreamCode[0]=(unsigned char)(CodePoint>>8); + StreamCode[1]=(unsigned char)(CodePoint&0xFF); + *LengthStreamCode=2; + return 1; + } + else if( CodePoint>=0x10000 && CodePoint<=0x10FFFF) // 4 octets + { + + UTF16 X = (UTF16) CodePoint; + + UTF32 U = (CodePoint >> 16) & (0x1F); + UTF16 W = (UTF16) U - 1; + UTF16 HiSurrogate = HI_SURROGATE_START | (W << 6) | (X >> 10); + UTF16 LoSurrogate = (UTF16) (LO_SURROGATE_START | X & 0x3FF); + UTF16*ptr=(UTF16*)StreamCode; + + StreamCode[0]=(unsigned char)(HiSurrogate>>8)&0xFF; + StreamCode[1]=(unsigned char)(HiSurrogate)&0xFF; + StreamCode[2]=(unsigned char)(LoSurrogate>>8)&0xFF; + StreamCode[3]=(unsigned char)(LoSurrogate&0xFF); + *LengthStreamCode=4; + + return 1; + } + else return 0; +} + +inline int CodePointToUTF16_LE(unsigned char*StreamCode,unsigned int CodePoint, int*LengthStreamCode) +{ + + if(CodePoint<=0xD7FF||((CodePoint>=0xE000)&&(CodePoint<=0xFFFD))) //sur 2 octets + { + + UTF16 X=CodePoint; + + StreamCode[0]=(unsigned char)(X&0xFF); + StreamCode[1]=(unsigned char)(X>>8); + + *LengthStreamCode=2; + return 1; + } + else if( CodePoint>=0x10000 && CodePoint<=0x10FFFF) //sur 4octets + { + UTF16 X = (UTF16) CodePoint; + UTF32 U = (CodePoint >> 16) & (0x1F); + UTF16 W = (UTF16) U - 1; + UTF16 HiSurrogate = HI_SURROGATE_START | (W << 6) | (X >> 10); + UTF16 LoSurrogate = (UTF16) (LO_SURROGATE_START | X & 0x3FF); + + StreamCode[1]=(unsigned char)(HiSurrogate>>8)&0xFF; + StreamCode[0]=(unsigned char)(HiSurrogate)&0xFF; + StreamCode[3]=(unsigned char)(LoSurrogate>>8)&0xFF; + StreamCode[2]=(unsigned char)(LoSurrogate&0xFF); + + *LengthStreamCode=4; + return 1; + } + else return 0; +} + +inline int UTF16_BEToCodePoint(unsigned char*StreamCode,unsigned int*CodePoint, int*LengthStreamCode) +{ + UTF16 hi=((int)(StreamCode[0]<<8))|((int)StreamCode[1]); + if(( hi<0xD800)||(hi>0xDF00))//sur 2 octets + { + + *CodePoint=hi; + *LengthStreamCode=2; + return 1; + } + else //sur 4 octets + { + UTF16 lo=((int)(StreamCode[2]<<8))|((int)StreamCode[3]); + if((lo>=0xDC00)||(lo<0xE000)) + { + UTF32 X = ((hi & 0x3F) << 10 )| lo & 0x3FF; + UTF32 W = ((hi >> 6) & 0x1F)+1; + + *CodePoint = W << 16 | X; + *LengthStreamCode=4; + return 1; + } + } + return 0; +} + +inline int UTF16_LEToCodePoint(unsigned char*StreamCode,unsigned int*CodePoint, int*LengthStreamCode) +{ + + + UTF16 t1=(UTF16)StreamCode[0],t2=(UTF16)StreamCode[1]; + UTF16 hi=t2<<8|t1; + + if(( hi<0xD800)||(hi>0xDF00)) + { + *CodePoint=hi; + *LengthStreamCode=2; + return 1; + } + else + { t1=(UTF16)StreamCode[2]; + t2=(UTF16)StreamCode[3]; + UTF16 lo=t2<<8|t1; + + if((lo>=0xDC00)||(lo<0xE000)) + { + + UTF32 X = ((hi & 0x3F) << 10 )| lo & 0x3FF; + UTF32 W = ((hi >> 6) & 0x1F)+1; + *CodePoint = W << 16 | X; + + *LengthStreamCode=4; + return 1; + } + } + return 0; +} + + +inline int CodePointToUTF32_BE(unsigned char*StreamCode,unsigned int CodePoint, int*LengthStreamCode) +{ + + + if(CodePoint<0x110000) + { + StreamCode[0]=(unsigned char)(CodePoint>>24); + StreamCode[1]=(unsigned char)((CodePoint>>16)&0xFF); + StreamCode[2]=(unsigned char)((CodePoint>>8)&0xFF); + StreamCode[3]=(unsigned char)(CodePoint&0xFF); + *LengthStreamCode=4; + return 1; + } + else return 0; +} + + +inline int CodePointToUTF32_LE(unsigned char*StreamCode,unsigned int CodePoint, int*LengthStreamCode) +{ + + if(CodePoint<0x110000) + { + unsigned int X=CodePoint; + + StreamCode[0]=(unsigned char)(X&0xFF); + StreamCode[1]=(unsigned char)(X>>8&0xFF); + StreamCode[2]=(unsigned char)(X>>16&0xFF); + StreamCode[3]=(unsigned char)(X>>24&0xFF); + *LengthStreamCode=4; + return 1; + } + else return 0; +} + +inline int UTF32_BEToCodePoint(unsigned char*StreamCode,unsigned int*CodePoint, int*LengthStreamCode) +{ + //int*ptr=(int*)StreamCode; + int Val=StreamCode[0]<<24|StreamCode[1]<<16|StreamCode[2]<<8|StreamCode[3]; + if(Val<0x110000) + { + *CodePoint=Val; + *LengthStreamCode=4; + return 1; + } + else return 0; +} + +inline int UTF32_LEToCodePoint(unsigned char*StreamCode,unsigned int*CodePoint, int*LengthStreamCode) +{ + + int Val=((int)StreamCode[0])|((int)StreamCode[1]<<8)| + ((int)StreamCode[2]<<16)|((int)StreamCode[3]<<24); + if(Val<0x110000) + { + *CodePoint=Val; + *LengthStreamCode=4; + return 1; + } + else return 0; +} + + +static int ConvertASCIIToUTF8(const char*ToConvert,int len, char*Out) +{ + unsigned int CodePoint; + int length; + int Taille=0; + while(len>0) + { + ASCIIToCodePoint((unsigned char*)ToConvert,&CodePoint,&length); + ToConvert+=length; + len-=length; + CodePointToUTF8((unsigned char*)Out,CodePoint,&length); + Out+=length; + Taille+=length; + } + return Taille; +} +#endif diff --git a/src/server/shared/Utilities/EventProcessor.cpp b/src/server/shared/Utilities/EventProcessor.cpp index 56d3f0e..63f1236 100644 --- a/src/server/shared/Utilities/EventProcessor.cpp +++ b/src/server/shared/Utilities/EventProcessor.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Utilities/ServiceWin32.cpp b/src/server/shared/Utilities/ServiceWin32.cpp index ee0d422..e4087b1 100644 --- a/src/server/shared/Utilities/ServiceWin32.cpp +++ b/src/server/shared/Utilities/ServiceWin32.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/shared/Utilities/Timer.h b/src/server/shared/Utilities/Timer.h index c052795..1de9ea7 100644 --- a/src/server/shared/Utilities/Timer.h +++ b/src/server/shared/Utilities/Timer.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Utilities/Util.cpp b/src/server/shared/Utilities/Util.cpp index cc0f4c9..852b161 100644 --- a/src/server/shared/Utilities/Util.cpp +++ b/src/server/shared/Utilities/Util.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/shared/Utilities/Util.h b/src/server/shared/Utilities/Util.h index eaf9218..cbadd5e 100644 --- a/src/server/shared/Utilities/Util.h +++ b/src/server/shared/Utilities/Util.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Copyright (C) 2012 SymphonyArt * diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt index 9094655..3b01daa 100644 --- a/src/server/worldserver/CMakeLists.txt +++ b/src/server/worldserver/CMakeLists.txt @@ -1,7 +1,7 @@ # # Copyright (C) 2008 - 2011 Trinity # -# Copyright (C) 2010 - 2014 Myth Project +# Copyright (C) 2010 - 2013 Myth Project # # Myth Project's source is based on the Trinity Project source, you can find the # link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -75,7 +75,7 @@ include_directories( ${CMAKE_SOURCE_DIR}/src/server/game/AI/ScriptedAI ${CMAKE_SOURCE_DIR}/src/server/game/AI/SmartScripts ${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse - ${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse/AuctionHouseBot + ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds/Zones ${CMAKE_SOURCE_DIR}/src/server/game/Chat @@ -198,4 +198,4 @@ if(CMAKE_COMPILER_IS_GNUCXX) add_precompiled_header(worldserver ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/worldPCH.h) elseif(MSVC) add_native_precompiled_header(worldserver ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/worldPCH) -endif() \ No newline at end of file +endif() diff --git a/src/server/worldserver/CommandLine/CliRunnable.cpp b/src/server/worldserver/CommandLine/CliRunnable.cpp index e288afb..2a3575f 100644 --- a/src/server/worldserver/CommandLine/CliRunnable.cpp +++ b/src/server/worldserver/CommandLine/CliRunnable.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/CommandLine/CliRunnable.h b/src/server/worldserver/CommandLine/CliRunnable.h index cde6dd8..8956da6 100644 --- a/src/server/worldserver/CommandLine/CliRunnable.h +++ b/src/server/worldserver/CommandLine/CliRunnable.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 0af262b..3ef3bb1 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. @@ -41,6 +41,11 @@ int m_ServiceStatus = -1; WorldDatabaseWorkerPool WorldDatabase; ///< Accessor to the world database CharacterDatabaseWorkerPool CharacterDatabase; ///< Accessor to the character database LoginDatabaseWorkerPool LoginDatabase; ///< Accessor to the realm/login database +/********* Add Custom ADDR ***************/ +char FactionHordeToAllianceChar[255]; +char FactionAllianceToHordeChar[255]; +char CustomizeChar[255]; +char RaceChar[255] ; uint32 realmID; ///< Id of the realm @@ -139,4 +144,4 @@ extern int main(int argc, char **argv) // 2 - restart command used, this code can be used by restarter for restart Trinityd return ret; -} \ No newline at end of file +} diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp index 5a41bb7..1276fe6 100644 --- a/src/server/worldserver/Master.cpp +++ b/src/server/worldserver/Master.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/Master.h b/src/server/worldserver/Master.h index bba3b81..6e32b78 100644 --- a/src/server/worldserver/Master.h +++ b/src/server/worldserver/Master.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/PrecompiledHeaders/worldPCH.cpp b/src/server/worldserver/PrecompiledHeaders/worldPCH.cpp index 953a628..73d4731 100644 --- a/src/server/worldserver/PrecompiledHeaders/worldPCH.cpp +++ b/src/server/worldserver/PrecompiledHeaders/worldPCH.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/PrecompiledHeaders/worldPCH.h b/src/server/worldserver/PrecompiledHeaders/worldPCH.h index 43546a8..5ca1561 100644 --- a/src/server/worldserver/PrecompiledHeaders/worldPCH.h +++ b/src/server/worldserver/PrecompiledHeaders/worldPCH.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/RemoteAccess/RARunnable.cpp b/src/server/worldserver/RemoteAccess/RARunnable.cpp index 4a811cd..dcf9664 100644 --- a/src/server/worldserver/RemoteAccess/RARunnable.cpp +++ b/src/server/worldserver/RemoteAccess/RARunnable.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/RemoteAccess/RARunnable.h b/src/server/worldserver/RemoteAccess/RARunnable.h index affe08d..df30d23 100644 --- a/src/server/worldserver/RemoteAccess/RARunnable.h +++ b/src/server/worldserver/RemoteAccess/RARunnable.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/RemoteAccess/RASocket.cpp b/src/server/worldserver/RemoteAccess/RASocket.cpp index fcadd79..1966175 100644 --- a/src/server/worldserver/RemoteAccess/RASocket.cpp +++ b/src/server/worldserver/RemoteAccess/RASocket.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/RemoteAccess/RASocket.h b/src/server/worldserver/RemoteAccess/RASocket.h index 24bcc7f..3e15b50 100644 --- a/src/server/worldserver/RemoteAccess/RASocket.h +++ b/src/server/worldserver/RemoteAccess/RASocket.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/TCSoap/TCSoap.cpp b/src/server/worldserver/TCSoap/TCSoap.cpp index 57ab641..1bf413f 100644 --- a/src/server/worldserver/TCSoap/TCSoap.cpp +++ b/src/server/worldserver/TCSoap/TCSoap.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/TCSoap/TCSoap.h b/src/server/worldserver/TCSoap/TCSoap.h index 6443b66..ac56b2f 100644 --- a/src/server/worldserver/TCSoap/TCSoap.h +++ b/src/server/worldserver/TCSoap/TCSoap.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/WorldThread/WorldRunnable.cpp b/src/server/worldserver/WorldThread/WorldRunnable.cpp index 0a9cc03..2f3f823 100644 --- a/src/server/worldserver/WorldThread/WorldRunnable.cpp +++ b/src/server/worldserver/WorldThread/WorldRunnable.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/WorldThread/WorldRunnable.h b/src/server/worldserver/WorldThread/WorldRunnable.h index b7f7cbd..86a776f 100644 --- a/src/server/worldserver/WorldThread/WorldRunnable.h +++ b/src/server/worldserver/WorldThread/WorldRunnable.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/resource.h b/src/server/worldserver/resource.h index 09af362..40c6b75 100644 --- a/src/server/worldserver/resource.h +++ b/src/server/worldserver/resource.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index d0b20f7..3c2b569 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -25,6 +25,15 @@ # CUSTOM SERVER OPTIONS ################################################################################################### +Rate.XP.Kill.Premium = 3 +Rate.XP.Quest.Premium = 3 +Rate.XP.Explore.Premium = 3 +SkillGain.Crafting.Premium = 3 +SkillGain.Defense.Premium = 3 +SkillGain.Gathering.Premium = 3 +SkillGain.Weapon.Premium = 3 +Rate.Drop.Money.Premium = 3 + ################################################################################################### # ANTI-CHEAT # @@ -107,7 +116,7 @@ MovementChecker.waterwalk = 1 # Important: RealmID must match the realmlist inside the realmd database. # Default: 1 -RealmID = 1 +RealmID = 2 # # DataDir @@ -399,7 +408,7 @@ MapUpdate.Threads = 4 # Example: "./worldd.pid" - (Enabled) # Default: "" - (Disabled) -PidFile = "" +PidFile = "world3.pid" # # LogLevel @@ -493,7 +502,7 @@ WorldLogFile = "" # Default: "DBErrors.log" - (Enabled) # "" - (Disabled) -DBErrorLogFile = "DBErrors.log" +DBErrorLogFile = "" # # CharLogFile @@ -834,7 +843,7 @@ GameType = 1 # 28 - (QA Server - any language) # 29 - (CN9 - basic-Latin at create, any at login) -RealmZone = 1 +RealmZone = 10 # # StrictPlayerNames @@ -963,6 +972,8 @@ CharacterCreating.Disabled = 0 # 4 - (Disabled, Dwarf) # 8 - (Disabled, Night Elf) # 16 - (Disabled, Undead) + + # 32 - (Disabled, Tauren) # 64 - (Disabled, Gnome) # 128 - (Disabled, Troll) @@ -1039,7 +1050,7 @@ MinDualSpecLevel = 40 # Range: 1-MaxPlayerLevel # Default: 1 -StartPlayerLevel = 1 +StartPlayerLevel = 80 # # StartHeroicPlayerLevel @@ -1130,7 +1141,7 @@ DisableWaterBreath = 4 # Default: 0 - (Disabled) # 1 - (Enabled) -AllFlightPaths = 0 +AllFlightPaths = 1 # # InstantFlightPaths @@ -1293,7 +1304,7 @@ MailDeliveryDelay = 3600 # Default: 0 - (Disabled) # 1 - (Enabled) -SkillChance.Prospecting = 0 +SkillChance.Prospecting = 1 # # SkillChance.Milling @@ -1301,7 +1312,7 @@ SkillChance.Prospecting = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -SkillChance.Milling = 0 +SkillChance.Milling = 1 # # OffhandCheckAtSpellUnlearn @@ -1335,7 +1346,7 @@ Event.Announce = 0 # Example: "Welcome to John\'s Server@This server runs on Trinity Core." # Default: "Welcome to a Trinity Core server." -Motd = "Welcome to a Myth Project WoW Server." +Motd = "Bienvenue sur le Serveur Fun PvP d'AuDelaDuReve" # # Server.LoginInfo @@ -1395,7 +1406,7 @@ AllowTwoSide.Accounts = 1 # Default: 0 - (Disabled) # 1 - (Enabled) -AllowTwoSide.Interaction.Chat = 0 +AllowTwoSide.Interaction.Chat = 1 # # AllowTwoSide.Interaction.Channel @@ -1403,7 +1414,7 @@ AllowTwoSide.Interaction.Chat = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -AllowTwoSide.Interaction.Channel = 0 +AllowTwoSide.Interaction.Channel = 1 # # AllowTwoSide.Interaction.Group @@ -1411,7 +1422,7 @@ AllowTwoSide.Interaction.Channel = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -AllowTwoSide.Interaction.Group = 0 +AllowTwoSide.Interaction.Group = 1 # # AllowTwoSide.Interaction.Guild @@ -1427,7 +1438,7 @@ AllowTwoSide.Interaction.Guild = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -AllowTwoSide.Interaction.Auction = 0 +AllowTwoSide.Interaction.Auction = 1 # # AllowTwoSide.Interaction.Mail @@ -1435,7 +1446,7 @@ AllowTwoSide.Interaction.Auction = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -AllowTwoSide.Interaction.Mail = 0 +AllowTwoSide.Interaction.Mail = 1 # # AllowTwoSide.WhoList @@ -1443,7 +1454,7 @@ AllowTwoSide.Interaction.Mail = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -AllowTwoSide.WhoList = 0 +AllowTwoSide.WhoList = 1 # # AllowTwoSide.AddFriend @@ -1451,7 +1462,7 @@ AllowTwoSide.WhoList = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -AllowTwoSide.AddFriend = 0 +AllowTwoSide.AddFriend = 1 # # AllowTwoSide.Trade @@ -1459,7 +1470,7 @@ AllowTwoSide.AddFriend = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -AllowTwoSide.Trade = 0 +AllowTwoSide.Trade = 1 # # TalentsInspecting @@ -1838,7 +1849,7 @@ GM.StartLevel = 80 # Default: 0 - (Disabled) # 1 - (Enabled) -GM.AllowInvite = 0 +GM.AllowInvite = 1 # # GM.AllowFriend @@ -1846,7 +1857,7 @@ GM.AllowInvite = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -GM.AllowFriend = 0 +GM.AllowFriend = 1 # # GM.LowerSecurity @@ -1944,15 +1955,15 @@ Rate.Skill.Discovery = 1 # 1 - (Rate.Drop.Item.Referenced) # 1 - (Rate.Drop.Money) -Rate.Drop.Item.Poor = 1 -Rate.Drop.Item.Normal = 1 -Rate.Drop.Item.Uncommon = 1 -Rate.Drop.Item.Rare = 1 -Rate.Drop.Item.Epic = 1 -Rate.Drop.Item.Legendary = 1 -Rate.Drop.Item.Artifact = 1 -Rate.Drop.Item.Referenced = 1 -Rate.Drop.Money = 1 +Rate.Drop.Item.Poor = 4 +Rate.Drop.Item.Normal = 4 +Rate.Drop.Item.Uncommon = 20 +Rate.Drop.Item.Rare = 10 +Rate.Drop.Item.Epic = 2.5 +Rate.Drop.Item.Legendary = 4 +Rate.Drop.Item.Artifact = 4 +Rate.Drop.Item.Referenced = 4 +Rate.Drop.Money = 30 # # Rate.Drop.Item.ReferencedAmount @@ -1970,9 +1981,9 @@ Rate.Drop.Item.ReferencedAmount = 1 # 1 - (Rate.XP.Quest) # 1 - ( Rate.XP.Explore) -Rate.XP.Kill = 1 -Rate.XP.Quest = 1 -Rate.XP.Explore = 1 +Rate.XP.Kill = 20 +Rate.XP.Quest = 25 +Rate.XP.Explore = 10 # # Rate.RepairCost @@ -1990,9 +2001,9 @@ Rate.RepairCost = 1 # 1 - (Rate.Rest.Offline.InTavernOrCity) # 1 - (Rate.Rest.Offline.InWilderness) -Rate.Rest.InGame = 1 -Rate.Rest.Offline.InTavernOrCity = 1 -Rate.Rest.Offline.InWilderness = 1 +Rate.Rest.InGame = 5 +Rate.Rest.Offline.InTavernOrCity = 10 +Rate.Rest.Offline.InWilderness = 7 # # Rate.Damage.Fall @@ -2011,16 +2022,16 @@ Rate.Damage.Fall = 1 # 1 - (Rate.Auction.Deposit) # 1 - (Rate.Auction.Cut) -Rate.Auction.Time = 1 -Rate.Auction.Deposit = 1 -Rate.Auction.Cut = 1 +Rate.Auction.Time = 7 +Rate.Auction.Deposit = 0 +Rate.Auction.Cut = 0 # # Rate.Honor # Description: Honor gain rate. # Default: 1 -Rate.Honor = 1 +Rate.Honor = 2 # # Rate.Mining.Amount @@ -2048,7 +2059,7 @@ Rate.Talent = 1 # Description: Reputation gain rate. # Default: 1 -Rate.Reputation.Gain = 1 +Rate.Reputation.Gain = 5 # # Rate.Reputation.LowLevel.Kill @@ -2116,7 +2127,7 @@ SkillGain.Weapon = 1 SkillChance.Orange = 100 SkillChance.Yellow = 75 SkillChance.Green = 25 -SkillChance.Grey = 0 +SkillChance.Grey = 10 # # SkillChance.MiningSteps @@ -2134,7 +2145,7 @@ SkillChance.SkinningSteps = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -DurabilityLoss.InPvP = 0 +DurabilityLoss.InPvP = 1 # # DurabilityLoss.OnDeath @@ -2194,7 +2205,7 @@ Death.SicknessLevel = 11 # 0 - (Disabled) Death.CorpseReclaimDelay.PvP = 1 -Death.CorpseReclaimDelay.PvE = 0 +Death.CorpseReclaimDelay.PvE = 1 # # Death.Bones.World @@ -2227,7 +2238,7 @@ Die.Command.Mode = 1 # Default: 0 - (Disabled) # 1 - (Enabled) -AutoBroadcast.On = 0 +AutoBroadcast.On = 1 # # AutoBroadcast.Center @@ -2243,7 +2254,7 @@ AutoBroadcast.Center = 0 # Description: Timer (in milliseconds) for auto broadcasts. # Default: 60000 - (60 seconds) -AutoBroadcast.Timer = 60000 +AutoBroadcast.Timer = 1800000 # ################################################################################################### @@ -2256,7 +2267,7 @@ AutoBroadcast.Timer = 60000 # Default: 1 - (Enabled) # 0 - (Disabled) -Battleground.CastDeserter = 1 +Battleground.CastDeserter = 0 # # Battleground.QueueAnnouncer.Enable @@ -2264,7 +2275,7 @@ Battleground.CastDeserter = 1 # Default: 0 - (Disabled) # 1 - (Enabled) -Battleground.QueueAnnouncer.Enable = 0 +Battleground.QueueAnnouncer.Enable = 1 # # Battleground.QueueAnnouncer.PlayerOnly @@ -2410,7 +2421,7 @@ Arena.ArenaStartMatchmakerRating = 0 # Description: Number of threads for network. # Default: 1 - (Recommended 1 thread per 1000 connections) -Network.Threads = 1 +Network.Threads = 2 # # Network.OutKBuff @@ -2484,7 +2495,7 @@ Ra.MinLevel = 5 # Default: 0 - (Disabled) # 1 - (Enabled) -SOAP.Enabled = 1 +SOAP.Enabled = 0 # # SOAP.IP @@ -2498,7 +2509,7 @@ SOAP.IP = "127.0.0.1" # Description: TCP port to reach the SOAP service. # Default: 7878 -SOAP.Port = 7878 +SOAP.Port = 7879 # ################################################################################################### @@ -2629,7 +2640,7 @@ NoResetTalentsCost = 0 # Default: 0 - (Disabled) # 1 - (Enabled) -ShowKickInWorld = 0 +ShowKickInWorld = 1 # # RecordUpdateTimeDiffInterval @@ -2731,7 +2742,7 @@ OutdoorPvP.Wintergrasp.Interval = 150 # 1 = Enable # -OutdoorPvP.Wintergrasp.CustomHonorRewards = 0 +OutdoorPvP.Wintergrasp.CustomHonorRewards = 1 # # OutdoorPvP.Wintergrasp.CustomHonorBattleWin @@ -2790,8 +2801,146 @@ OutdoorPvP.Wintergrasp.CustomHonorDamagedBuilding = 750 # Requires OutdoorPvP.Wintergrasp.CustomHonorRewards = 1. # Default: 1500 # +########################################################## + +############################################################################################################################################################## +#BuffNPC +BuffNPC.OnlyGMs = 0 +BuffNPC.EnableSmallBuff = 1 +BuffNPC.EnableGreatBuff = 1 +BuffNPC.EnableGMBuff = 0 +BuffNPC.EnablePlayerTools = 0 +BuffNPC.EnableGivemeGold = 0 +BuffNPC.EnableRemoveResSickness = 0 +BuffGoldCost = 0 (2 Gold) +GMVendor.OnlyGMs = 0 +#ProfessionNPC +ProfessionNPC.OnlyGMs = 0 +ProfessionNPC.EnableProfessions = 1 +ProfessionNPC.EnableSecondarySkills = 1 +SkillPoints = 450 +SkillGoldCost = 0 (2 Gold) +#ProfessionPVP +ProfessionPVP.OnlyGMs = 0 +ProfessionPVP.EnableProfessions = 1 +ProfessionPVP.EnableProfessions = 1 +############################################################################################################################################################## + + +############################################################################################################################################################## +################# Changement de faction, Changement de race, Customization ########################## +############################################################################################################################################################## +Change.Faction.Item.Requis = 44990 +Change.Faction.Horde.To.Alliance.Item.Requis.Count = 300 +Change.Faction.Alliance.To.Horde.Item.Requis.Count = 300 +Change.Faction.Horde.To.Alliance.Menu = "Changer de Faction contre 300 sceau de champion" +Change.Faction.Alliance.To.Horde.Menu = "Changer de Faction contre 200 sceau de champion" + +Change.Race.Item.Requis = 44990 +Change.Race.Item.Requis.Count = 50 +Change.Race.Menu = "Changer de race contre 50 sceau de champion" + +Change.Customize.Item.Requis = 44990 +Change.Customize.Item.Requis.Count = 20 +Change.Customize.Menu = "Renomer le et donnez lui un nouveau look ou sexe contre 20 sceau champion" + +############################################################################################################################################################## + +############################################################################################################################################################## +################ Transmogrification ########################## +############################################################################################################################################################## +# +# GOLD COST +# +# Transmogrification.RequireGold +# Description: 0 No gold cost, 1 scaling gold cost, 2 custom gold cost +# Default: 1 +# +# Transmogrification.GoldModifier +# Description: A multiplier for the default gold cost (Transmogrification.RequireGold is 1) +# Default: 1.0 +# +# Transmogrification.GoldCost +# Description: Cost of transmogrification in copper for custom gold cost (Transmogrification.RequireGold is 2) +# Default: 100000 +############################################################################################################################################################## + +Transmogrification.RequireGold = 1 +Transmogrification.GoldModifier = 1.0 +Transmogrification.GoldCost = 100000 + +############################################################################################################################################################### +# TOKEN COST +# +# Transmogrification.RequireToken +# Description: Adds/disables token cost +# Default: 0 +# +# Transmogrification.TokenEntry +# Description: Entry of the token item +# Default: 49426 +# +# Transmogrification.TokenAmount +# Description: Amount of tokens required +# Default: 1 +############################################################################################################################################################## -OutdoorPvP.Wintergrasp.CustomHonorIntactBuilding = 1500 +Transmogrification.RequireToken = 0 +Transmogrification.TokenEntry = 49426 +Transmogrification.TokenAmount = 1 +############################################################################################################################################################### +# QUALITIES +# +# Transmogrification.AllowPoor +# Description: Allow poor quality items to be used as source and target items +# Default: 0 +# +# Transmogrification.AllowCommon +# Description: Allow common quality items to be used as source and target items +# Default: 0 # -########################################################## \ No newline at end of file +# Transmogrification.AllowUncommon +# Description: Allow uncommon quality items to be used as source and target items +# Default: 1 +# +# Transmogrification.AllowRare +# Description: Allow rare quality items to be used as source and target items +# Default: 1 +# +# Transmogrification.AllowEpic +# Description: Allow epic quality items to be used as source and target items +# Default: 1 +# +# Transmogrification.AllowLegendary +# Description: Allow legendary quality items to be used as source and target items +# Default: 0 +# +# Transmogrification.AllowArtifact +# Description: Allow artifact quality items to be used as source and target items +# Default: 0 +# +# Transmogrification.AllowHeirloom +# Description: Allow heirloom quality items to be used as source and target items +# Default: 1 +############################################################################################################################################################## + +Transmogrification.AllowPoor = 0 +Transmogrification.AllowCommon = 0 +Transmogrification.AllowUncommon = 1 +Transmogrification.AllowRare = 1 +Transmogrification.AllowEpic = 1 +Transmogrification.AllowLegendary = 0 +Transmogrification.AllowArtifact = 0 +Transmogrification.AllowHeirloom = 1 + +############################################################################################################################################################## + + + + + + + + + diff --git a/src/server/worldserver/worldserver.rc b/src/server/worldserver/worldserver.rc index b5b5b64..eaf20fb 100644 --- a/src/server/worldserver/worldserver.rc +++ b/src/server/worldserver/worldserver.rc @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 - 2011 Trinity * - * Copyright (C) 2010 - 2014 Myth Project + * Copyright (C) 2010 - 2013 Myth Project * * Myth Project's source is based on the Trinity Project source, you can find the * link to that easily in Trinity Copyrights. Myth Project is a private community. From d010cf9b344246d887f48502b9cea5183abbaa63 Mon Sep 17 00:00:00 2001 From: LM Date: Mon, 10 Aug 2015 20:01:00 +0200 Subject: [PATCH 2/2] Update README.md --- README.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7379740..7ca3c48 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,18 @@ MythCore ======== -MythCore v12.54 Custom B by Desch +MythCore v12.54 by Desch. -zonewow.com +This repository contains 3 diferents branches: blizzlike (master), Custom_A and Custom_B. -wowtallercreador.com +DBCs, MAPS, VMAPs and MMaps are available at RELEASE PAGE. -sourcewow.com +Custom_B Custom Scripts +======== + +![alt tag](http://i.imgur.com/4gTCJdI.png "Custom B") +![alt tag](http://i.imgur.com/7XJ4Jty.png "Custom B") + +More information and other items at: ZoneWoW.com + +Desch