aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting
diff options
context:
space:
mode:
authorXanadu <none@none>2010-07-17 01:06:40 +0200
committerXanadu <none@none>2010-07-17 01:06:40 +0200
commit377d05e15d4d769fee22fae6070973a8fe186846 (patch)
treeb79ba842b078facedd3eb0b36cc81255ca219a8e /src/server/game/Scripting
parent4c992095a96dfc2b5fab4567d5dd5c2e7e5ddec8 (diff)
Correctly redo file moves/renames from revs 8437, 8441, 8442, 8444, 8446, 8448, 8850.
--HG-- branch : trunk rename : src/server/authserver/AuthCodes.cpp => src/server/authserver/Authentication/AuthCodes.cpp rename : src/server/authserver/AuthCodes.h => src/server/authserver/Authentication/AuthCodes.h rename : src/server/authserver/RealmList.cpp => src/server/authserver/Realms/RealmList.cpp rename : src/server/authserver/RealmList.h => src/server/authserver/Realms/RealmList.h rename : src/server/authserver/AuthSocket.cpp => src/server/authserver/Server/AuthSocket.cpp rename : src/server/authserver/AuthSocket.h => src/server/authserver/Server/AuthSocket.h rename : src/server/authserver/RealmAcceptor.h => src/server/authserver/Server/RealmAcceptor.h rename : src/server/authserver/RealmSocket.cpp => src/server/authserver/Server/RealmSocket.cpp rename : src/server/authserver/RealmSocket.h => src/server/authserver/Server/RealmSocket.h rename : src/server/game/AI/CombatAI.cpp => src/server/game/AI/CoreAI/CombatAI.cpp rename : src/server/game/AI/CombatAI.h => src/server/game/AI/CoreAI/CombatAI.h rename : src/server/game/AI/GuardAI.cpp => src/server/game/AI/CoreAI/GuardAI.cpp rename : src/server/game/AI/GuardAI.h => src/server/game/AI/CoreAI/GuardAI.h rename : src/server/game/AI/PassiveAI.cpp => src/server/game/AI/CoreAI/PassiveAI.cpp rename : src/server/game/AI/PassiveAI.h => src/server/game/AI/CoreAI/PassiveAI.h rename : src/server/game/AI/PetAI.cpp => src/server/game/AI/CoreAI/PetAI.cpp rename : src/server/game/AI/PetAI.h => src/server/game/AI/CoreAI/PetAI.h rename : src/server/game/AI/ReactorAI.cpp => src/server/game/AI/CoreAI/ReactorAI.cpp rename : src/server/game/AI/ReactorAI.h => src/server/game/AI/CoreAI/ReactorAI.h rename : src/server/game/AI/TotemAI.cpp => src/server/game/AI/CoreAI/TotemAI.cpp rename : src/server/game/AI/TotemAI.h => src/server/game/AI/CoreAI/TotemAI.h rename : src/server/game/AI/UnitAI.cpp => src/server/game/AI/CoreAI/UnitAI.cpp rename : src/server/game/AI/UnitAI.h => src/server/game/AI/CoreAI/UnitAI.h rename : src/server/game/Account/AccountMgr.cpp => src/server/game/Accounts/AccountMgr.cpp rename : src/server/game/Account/AccountMgr.h => src/server/game/Accounts/AccountMgr.h rename : src/server/game/AI/AuctionHouseBot/AuctionHouseBot.cpp => src/server/game/AuctionHouse/AuctionHouseBot/AuctionHouseBot.cpp rename : src/server/game/AI/AuctionHouseBot/AuctionHouseBot.h => src/server/game/AuctionHouse/AuctionHouseBot/AuctionHouseBot.h rename : src/server/game/BattleGrounds/BattleGroundAA.cpp => src/server/game/BattleGrounds/Zones/BattleGroundAA.cpp rename : src/server/game/BattleGrounds/BattleGroundAA.h => src/server/game/BattleGrounds/Zones/BattleGroundAA.h rename : src/server/game/BattleGrounds/BattleGroundAB.cpp => src/server/game/BattleGrounds/Zones/BattleGroundAB.cpp rename : src/server/game/BattleGrounds/BattleGroundAB.h => src/server/game/BattleGrounds/Zones/BattleGroundAB.h rename : src/server/game/BattleGrounds/BattleGroundAV.cpp => src/server/game/BattleGrounds/Zones/BattleGroundAV.cpp rename : src/server/game/BattleGrounds/BattleGroundAV.h => src/server/game/BattleGrounds/Zones/BattleGroundAV.h rename : src/server/game/BattleGrounds/BattleGroundBE.cpp => src/server/game/BattleGrounds/Zones/BattleGroundBE.cpp rename : src/server/game/BattleGrounds/BattleGroundBE.h => src/server/game/BattleGrounds/Zones/BattleGroundBE.h rename : src/server/game/BattleGrounds/BattleGroundDS.cpp => src/server/game/BattleGrounds/Zones/BattleGroundDS.cpp rename : src/server/game/BattleGrounds/BattleGroundDS.h => src/server/game/BattleGrounds/Zones/BattleGroundDS.h rename : src/server/game/BattleGrounds/BattleGroundEY.cpp => src/server/game/BattleGrounds/Zones/BattleGroundEY.cpp rename : src/server/game/BattleGrounds/BattleGroundEY.h => src/server/game/BattleGrounds/Zones/BattleGroundEY.h rename : src/server/game/BattleGrounds/BattleGroundIC.cpp => src/server/game/BattleGrounds/Zones/BattleGroundIC.cpp rename : src/server/game/BattleGrounds/BattleGroundIC.h => src/server/game/BattleGrounds/Zones/BattleGroundIC.h rename : src/server/game/BattleGrounds/BattleGroundNA.cpp => src/server/game/BattleGrounds/Zones/BattleGroundNA.cpp rename : src/server/game/BattleGrounds/BattleGroundNA.h => src/server/game/BattleGrounds/Zones/BattleGroundNA.h rename : src/server/game/BattleGrounds/BattleGroundRB.cpp => src/server/game/BattleGrounds/Zones/BattleGroundRB.cpp rename : src/server/game/BattleGrounds/BattleGroundRB.h => src/server/game/BattleGrounds/Zones/BattleGroundRB.h rename : src/server/game/BattleGrounds/BattleGroundRL.cpp => src/server/game/BattleGrounds/Zones/BattleGroundRL.cpp rename : src/server/game/BattleGrounds/BattleGroundRL.h => src/server/game/BattleGrounds/Zones/BattleGroundRL.h rename : src/server/game/BattleGrounds/BattleGroundRV.cpp => src/server/game/BattleGrounds/Zones/BattleGroundRV.cpp rename : src/server/game/BattleGrounds/BattleGroundRV.h => src/server/game/BattleGrounds/Zones/BattleGroundRV.h rename : src/server/game/BattleGrounds/BattleGroundSA.cpp => src/server/game/BattleGrounds/Zones/BattleGroundSA.cpp rename : src/server/game/BattleGrounds/BattleGroundSA.h => src/server/game/BattleGrounds/Zones/BattleGroundSA.h rename : src/server/game/BattleGrounds/BattleGroundWS.cpp => src/server/game/BattleGrounds/Zones/BattleGroundWS.cpp rename : src/server/game/BattleGrounds/BattleGroundWS.h => src/server/game/BattleGrounds/Zones/BattleGroundWS.h rename : src/server/game/Chat/Channel.cpp => src/server/game/Chat/Channels/Channel.cpp rename : src/server/game/Chat/Channel.h => src/server/game/Chat/Channels/Channel.h rename : src/server/game/Chat/ChannelMgr.cpp => src/server/game/Chat/Channels/ChannelMgr.cpp rename : src/server/game/Chat/ChannelMgr.h => src/server/game/Chat/Channels/ChannelMgr.h rename : src/server/game/Chat/Debugcmds.cpp => src/server/game/Chat/Commands/Debugcmds.cpp rename : src/server/game/Chat/Level0.cpp => src/server/game/Chat/Commands/Level0.cpp rename : src/server/game/Chat/Level1.cpp => src/server/game/Chat/Commands/Level1.cpp rename : src/server/game/Chat/Level2.cpp => src/server/game/Chat/Commands/Level2.cpp rename : src/server/game/Chat/Level3.cpp => src/server/game/Chat/Commands/Level3.cpp rename : src/server/shared/vmap/BIH.cpp => src/server/game/CollisionDetection/BIH.cpp rename : src/server/shared/vmap/BIH.h => src/server/game/CollisionDetection/BIH.h rename : src/server/shared/vmap/CMakeLists.txt => src/server/game/CollisionDetection/CMakeLists.txt rename : src/server/shared/vmap/IVMapManager.h => src/server/game/CollisionDetection/IVMapManager.h rename : src/server/shared/vmap/MapTree.cpp => src/server/game/CollisionDetection/MapTree.cpp rename : src/server/shared/vmap/MapTree.h => src/server/game/CollisionDetection/MapTree.h rename : src/server/shared/vmap/ModelInstance.cpp => src/server/game/CollisionDetection/ModelInstance.cpp rename : src/server/shared/vmap/ModelInstance.h => src/server/game/CollisionDetection/ModelInstance.h rename : src/server/shared/vmap/TileAssembler.cpp => src/server/game/CollisionDetection/TileAssembler.cpp rename : src/server/shared/vmap/TileAssembler.h => src/server/game/CollisionDetection/TileAssembler.h rename : src/server/shared/vmap/VMapDefinitions.h => src/server/game/CollisionDetection/VMapDefinitions.h rename : src/server/shared/vmap/VMapFactory.cpp => src/server/game/CollisionDetection/VMapFactory.cpp rename : src/server/shared/vmap/VMapFactory.h => src/server/game/CollisionDetection/VMapFactory.h rename : src/server/shared/vmap/VMapManager2.cpp => src/server/game/CollisionDetection/VMapManager2.cpp rename : src/server/shared/vmap/VMapManager2.h => src/server/game/CollisionDetection/VMapManager2.h rename : src/server/shared/vmap/VMapTools.h => src/server/game/CollisionDetection/VMapTools.h rename : src/server/shared/vmap/WorldModel.cpp => src/server/game/CollisionDetection/WorldModel.cpp rename : src/server/shared/vmap/WorldModel.h => src/server/game/CollisionDetection/WorldModel.h rename : src/server/game/Events/UnitEvents.h => src/server/game/Combat/UnitEvents.h rename : src/server/game/ConditionMgr/ConditionMgr.cpp => src/server/game/Conditions/ConditionMgr.cpp rename : src/server/game/ConditionMgr/ConditionMgr.h => src/server/game/Conditions/ConditionMgr.h rename : src/server/game/LookingForGroup/LFG.h => src/server/game/DungeonFinding/LFG.h rename : src/server/game/LookingForGroup/LFGMgr.cpp => src/server/game/DungeonFinding/LFGMgr.cpp rename : src/server/game/LookingForGroup/LFGMgr.h => src/server/game/DungeonFinding/LFGMgr.h rename : src/server/game/Entities/Object/Corpse.cpp => src/server/game/Entities/Corpse/Corpse.cpp rename : src/server/game/Entities/Object/Corpse.h => src/server/game/Entities/Corpse/Corpse.h rename : src/server/game/Entities/Object/DynamicObject.cpp => src/server/game/Entities/DynamicObject/DynamicObject.cpp rename : src/server/game/Entities/Object/DynamicObject.h => src/server/game/Entities/DynamicObject/DynamicObject.h rename : src/server/game/Entities/Item/Bag.cpp => src/server/game/Entities/Item/Container/Bag.cpp rename : src/server/game/Entities/Item/Bag.h => src/server/game/Entities/Item/Container/Bag.h rename : src/server/game/Map/ObjectPosSelector.cpp => src/server/game/Entities/Object/ObjectPosSelector.cpp rename : src/server/game/Map/ObjectPosSelector.h => src/server/game/Entities/Object/ObjectPosSelector.h rename : src/server/game/Entities/Object/UpdateData.cpp => src/server/game/Entities/Object/Updates/UpdateData.cpp rename : src/server/game/Entities/Object/UpdateData.h => src/server/game/Entities/Object/Updates/UpdateData.h rename : src/server/game/Entities/Object/UpdateFields.h => src/server/game/Entities/Object/Updates/UpdateFields.h rename : src/server/game/Entities/Object/UpdateMask.h => src/server/game/Entities/Object/Updates/UpdateMask.h rename : src/server/game/Movement/Transports.cpp => src/server/game/Entities/Transport/Transports.cpp rename : src/server/game/Movement/Transports.h => src/server/game/Entities/Transport/Transports.h rename : src/server/game/Events/GlobalEvents.cpp => src/server/game/Globals/GlobalEvents.cpp rename : src/server/game/Events/GlobalEvents.h => src/server/game/Globals/GlobalEvents.h rename : src/server/game/Entities/Object/ObjectAccessor.cpp => src/server/game/Globals/ObjectAccessor.cpp rename : src/server/game/Entities/Object/ObjectAccessor.h => src/server/game/Globals/ObjectAccessor.h rename : src/server/game/Entities/Object/ObjectMgr.cpp => src/server/game/Globals/ObjectMgr.cpp rename : src/server/game/Entities/Object/ObjectMgr.h => src/server/game/Globals/ObjectMgr.h rename : src/server/game/Map/Cell/Cell.h => src/server/game/Maps/Cell/Cell.h rename : src/server/game/Map/Cell/CellImpl.h => src/server/game/Maps/Cell/CellImpl.h rename : src/server/game/Map/Grid/GridDefines.h => src/server/game/Maps/Grid/GridDefines.h rename : src/server/game/Map/Grid/GridNotifiers.cpp => src/server/game/Maps/Grid/GridNotifiers.cpp rename : src/server/game/Map/Grid/GridNotifiers.h => src/server/game/Maps/Grid/GridNotifiers.h rename : src/server/game/Map/Grid/GridNotifiersImpl.h => src/server/game/Maps/Grid/GridNotifiersImpl.h rename : src/server/game/Map/Grid/GridStates.cpp => src/server/game/Maps/Grid/GridStates.cpp rename : src/server/game/Map/Grid/GridStates.h => src/server/game/Maps/Grid/GridStates.h rename : src/server/game/Map/Grid/ObjectGridLoader.cpp => src/server/game/Maps/Grid/ObjectGridLoader.cpp rename : src/server/game/Map/Grid/ObjectGridLoader.h => src/server/game/Maps/Grid/ObjectGridLoader.h rename : src/server/game/Map/Map.cpp => src/server/game/Maps/Map.cpp rename : src/server/game/Map/Map.h => src/server/game/Maps/Map.h rename : src/server/game/Map/MapInstanced.cpp => src/server/game/Maps/MapInstanced.cpp rename : src/server/game/Map/MapInstanced.h => src/server/game/Maps/MapInstanced.h rename : src/server/game/Map/MapManager.cpp => src/server/game/Maps/MapManager.cpp rename : src/server/game/Map/MapManager.h => src/server/game/Maps/MapManager.h rename : src/server/game/Map/MapRefManager.h => src/server/game/Maps/MapRefManager.h rename : src/server/game/Map/MapReference.h => src/server/game/Maps/MapReference.h rename : src/server/game/Map/MapUpdater.cpp => src/server/game/Maps/MapUpdater.cpp rename : src/server/game/Map/MapUpdater.h => src/server/game/Maps/MapUpdater.h rename : src/server/game/Map/ZoneScript.h => src/server/game/Maps/ZoneScript.h rename : src/server/game/Globals/Formulas.h => src/server/game/Miscellaneous/Formulas.h rename : src/server/game/Globals/Language.h => src/server/game/Miscellaneous/Language.h rename : src/server/game/Globals/SharedDefines.h => src/server/game/Miscellaneous/SharedDefines.h rename : src/server/game/Movement/MovementGenerators/MovementGenerator.cpp => src/server/game/Movement/MovementGenerator.cpp rename : src/server/game/Movement/MovementGenerators/MovementGenerator.h => src/server/game/Movement/MovementGenerator.h rename : src/server/game/Movement/MovementGenerators/MovementGeneratorImpl.h => src/server/game/Movement/MovementGeneratorImpl.h rename : src/server/game/Movement/Path.h => src/server/game/Movement/Waypoints/Path.h rename : src/server/game/Movement/WaypointManager.cpp => src/server/game/Movement/Waypoints/WaypointManager.cpp rename : src/server/game/Movement/WaypointManager.h => src/server/game/Movement/Waypoints/WaypointManager.h rename : src/server/game/OutdoorPvP/OutdoorPvPEP.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPEP.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPEP.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPEP.h rename : src/server/game/OutdoorPvP/OutdoorPvPHP.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPHP.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPHP.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPHP.h rename : src/server/game/OutdoorPvP/OutdoorPvPNA.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPNA.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPNA.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPNA.h rename : src/server/game/OutdoorPvP/OutdoorPvPSI.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPSI.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPSI.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPSI.h rename : src/server/game/OutdoorPvP/OutdoorPvPTF.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPTF.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPTF.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPTF.h rename : src/server/game/OutdoorPvP/OutdoorPvPZM.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPZM.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPZM.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPZM.h rename : src/server/game/PrecompiledHeaders/pchlinux.cpp => src/server/game/PrecompiledHeaders/NixCorePCH.cpp rename : src/server/game/PrecompiledHeaders/pchlinux.h => src/server/game/PrecompiledHeaders/NixCorePCH.h rename : src/server/game/ScriptMgr/ScriptedPch.cpp => src/server/game/PrecompiledHeaders/ScriptPCH.cpp rename : src/server/game/ScriptMgr/ScriptedPch.h => src/server/game/PrecompiledHeaders/ScriptPCH.h rename : src/server/game/PrecompiledHeaders/pchdef.cpp => src/server/game/PrecompiledHeaders/WinCorePCH.cpp rename : src/server/game/PrecompiledHeaders/pchdef.h => src/server/game/PrecompiledHeaders/WinCorePCH.h rename : src/server/game/ScriptMgr/ScriptLoader.cpp => src/server/game/Scripting/ScriptLoader.cpp rename : src/server/game/ScriptMgr/ScriptLoader.h => src/server/game/Scripting/ScriptLoader.h rename : src/server/game/ScriptMgr/ScriptMgr.cpp => src/server/game/Scripting/ScriptMgr.cpp rename : src/server/game/ScriptMgr/ScriptMgr.h => src/server/game/Scripting/ScriptMgr.h rename : src/server/game/ScriptMgr/ScriptSystem.cpp => src/server/game/Scripting/ScriptSystem.cpp rename : src/server/game/ScriptMgr/ScriptSystem.h => src/server/game/Scripting/ScriptSystem.h rename : src/server/game/Addons/AddonHandler.cpp => src/server/game/Server/Protocol/Handlers/AddonHandler.cpp rename : src/server/game/Addons/AddonHandler.h => src/server/game/Server/Protocol/Handlers/AddonHandler.h rename : src/server/game/BattleGrounds/ArenaTeamHandler.cpp => src/server/game/Server/Protocol/Handlers/ArenaTeamHandler.cpp rename : src/server/game/AuctionHouse/AuctionHouseHandler.cpp => src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp rename : src/server/game/BattleGrounds/BattleGroundHandler.cpp => src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp rename : src/server/game/Calender/CalendarHandler.cpp => src/server/game/Server/Protocol/Handlers/CalendarHandler.cpp rename : src/server/game/Chat/ChannelHandler.cpp => src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp rename : src/server/game/Entities/Player/CharacterHandler.cpp => src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp rename : src/server/game/Chat/ChatHandler.cpp => src/server/game/Server/Protocol/Handlers/ChatHandler.cpp rename : src/server/game/Combat/CombatHandler.cpp => src/server/game/Server/Protocol/Handlers/CombatHandler.cpp rename : src/server/game/Entities/Player/DuelHandler.cpp => src/server/game/Server/Protocol/Handlers/DuelHandler.cpp rename : src/server/game/Groups/GroupHandler.cpp => src/server/game/Server/Protocol/Handlers/GroupHandler.cpp rename : src/server/game/Guilds/GuildHandler.cpp => src/server/game/Server/Protocol/Handlers/GuildHandler.cpp rename : src/server/game/Entities/Item/ItemHandler.cpp => src/server/game/Server/Protocol/Handlers/ItemHandler.cpp rename : src/server/game/LookingForGroup/LFGHandler.cpp => src/server/game/Server/Protocol/Handlers/LFGHandler.cpp rename : src/server/game/Loot/LootHandler.cpp => src/server/game/Server/Protocol/Handlers/LootHandler.cpp rename : src/server/game/Entities/Player/MiscHandler.cpp => src/server/game/Server/Protocol/Handlers/MiscHandler.cpp rename : src/server/game/Movement/MovementHandler.cpp => src/server/game/Server/Protocol/Handlers/MovementHandler.cpp rename : src/server/game/Entities/Creature/NPCHandler.cpp => src/server/game/Server/Protocol/Handlers/NPCHandler.cpp rename : src/server/game/Entities/Creature/NPCHandler.h => src/server/game/Server/Protocol/Handlers/NPCHandler.h rename : src/server/game/Entities/Pet/PetHandler.cpp => src/server/game/Server/Protocol/Handlers/PetHandler.cpp rename : src/server/game/Entities/Player/PetitionsHandler.cpp => src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp rename : src/server/game/Quests/QueryHandler.cpp => src/server/game/Server/Protocol/Handlers/QueryHandler.cpp rename : src/server/game/Quests/QuestHandler.cpp => src/server/game/Server/Protocol/Handlers/QuestHandler.cpp rename : src/server/game/Skills/SkillHandler.cpp => src/server/game/Server/Protocol/Handlers/SkillHandler.cpp rename : src/server/game/Spells/SpellHandler.cpp => src/server/game/Server/Protocol/Handlers/SpellHandler.cpp rename : src/server/game/Movement/TaxiHandler.cpp => src/server/game/Server/Protocol/Handlers/TaxiHandler.cpp rename : src/server/game/Entities/Player/TicketHandler.cpp => src/server/game/Server/Protocol/Handlers/TicketHandler.cpp rename : src/server/game/Entities/Player/TradeHandler.cpp => src/server/game/Server/Protocol/Handlers/TradeHandler.cpp rename : src/server/game/Entities/Player/VoiceChatHandler.cpp => src/server/game/Server/Protocol/Handlers/VoiceChatHandler.cpp rename : src/server/game/Opcodes/Opcodes.cpp => src/server/game/Server/Protocol/Opcodes.cpp rename : src/server/game/Opcodes/Opcodes.h => src/server/game/Server/Protocol/Opcodes.h rename : src/server/game/World/WorldLog.cpp => src/server/game/Server/Protocol/WorldLog.cpp rename : src/server/game/World/WorldLog.h => src/server/game/Server/Protocol/WorldLog.h rename : src/server/game/World/WorldSession.cpp => src/server/game/Server/WorldSession.cpp rename : src/server/game/World/WorldSession.h => src/server/game/Server/WorldSession.h rename : src/server/game/World/WorldSocket.cpp => src/server/game/Server/WorldSocket.cpp rename : src/server/game/World/WorldSocket.h => src/server/game/Server/WorldSocket.h rename : src/server/game/World/WorldSocketMgr.cpp => src/server/game/Server/WorldSocketMgr.cpp rename : src/server/game/World/WorldSocketMgr.h => src/server/game/Server/WorldSocketMgr.h rename : src/server/shared/Config/CMakeLists.txt => src/server/shared/Configuration/CMakeLists.txt rename : src/server/shared/Config/Config.cpp => src/server/shared/Configuration/Config.cpp rename : src/server/shared/Config/Config.h => src/server/shared/Configuration/Config.h rename : src/server/shared/Config/ConfigEnv.h => src/server/shared/Configuration/ConfigEnv.h rename : src/server/shared/Config/ConfigLibrary.vcproj => src/server/shared/Configuration/ConfigLibrary.vcproj rename : src/server/shared/Config/dotconfpp/dotconfpp.cpp => src/server/shared/Configuration/dotconfpp/dotconfpp.cpp rename : src/server/shared/Config/dotconfpp/dotconfpp.h => src/server/shared/Configuration/dotconfpp/dotconfpp.h rename : src/server/shared/Config/dotconfpp/mempool.cpp => src/server/shared/Configuration/dotconfpp/mempool.cpp rename : src/server/shared/Config/dotconfpp/mempool.h => src/server/shared/Configuration/dotconfpp/mempool.h rename : src/server/shared/Auth/SARC4.cpp => src/server/shared/Cryptography/ARC4.cpp rename : src/server/shared/Auth/SARC4.h => src/server/shared/Cryptography/ARC4.h rename : src/server/shared/Auth/AuthCrypt.cpp => src/server/shared/Cryptography/Authentication/AuthCrypt.cpp rename : src/server/shared/Auth/AuthCrypt.h => src/server/shared/Cryptography/Authentication/AuthCrypt.h rename : src/server/shared/Auth/BigNumber.cpp => src/server/shared/Cryptography/BigNumber.cpp rename : src/server/shared/Auth/BigNumber.h => src/server/shared/Cryptography/BigNumber.h rename : src/server/shared/Auth/CMakeLists.txt => src/server/shared/Cryptography/CMakeLists.txt rename : src/server/shared/Auth/Hmac.cpp => src/server/shared/Cryptography/HMACSHA1.cpp rename : src/server/shared/Auth/Hmac.h => src/server/shared/Cryptography/HMACSHA1.h rename : src/server/shared/Auth/md5.c => src/server/shared/Cryptography/MD5.c rename : src/server/shared/Auth/md5.h => src/server/shared/Cryptography/MD5.h rename : src/server/shared/Auth/Sha1.cpp => src/server/shared/Cryptography/SHA1.cpp rename : src/server/shared/Auth/Sha1.h => src/server/shared/Cryptography/SHA1.h rename : src/server/shared/Database/DBCFileLoader.cpp => src/server/shared/DataStores/DBCFileLoader.cpp rename : src/server/shared/Database/DBCFileLoader.h => src/server/shared/DataStores/DBCFileLoader.h rename : src/server/shared/Database/DBCStore.h => src/server/shared/DataStores/DBCStore.h rename : src/server/shared/Errors.h => src/server/shared/Debugging/Errors.h rename : src/server/shared/MemoryLeaks.cpp => src/server/shared/Debugging/MemoryLeaks.cpp rename : src/server/shared/MemoryLeaks.h => src/server/shared/Debugging/MemoryLeaks.h rename : src/server/shared/WheatyExceptionReport.cpp => src/server/shared/Debugging/WheatyExceptionReport.cpp rename : src/server/shared/WheatyExceptionReport.h => src/server/shared/Debugging/WheatyExceptionReport.h rename : src/server/shared/Log.cpp => src/server/shared/Logging/Log.cpp rename : src/server/shared/Log.h => src/server/shared/Logging/Log.h rename : src/server/shared/ByteBuffer.h => src/server/shared/Packets/ByteBuffer.h rename : src/server/shared/WorldPacket.h => src/server/shared/Packets/WorldPacket.h rename : src/server/shared/DelayExecutor.cpp => src/server/shared/Threading/DelayExecutor.cpp rename : src/server/shared/DelayExecutor.h => src/server/shared/Threading/DelayExecutor.h rename : src/server/shared/LockedQueue.h => src/server/shared/Threading/LockedQueue.h rename : src/server/shared/Threading.cpp => src/server/shared/Threading/Threading.cpp rename : src/server/shared/Threading.h => src/server/shared/Threading/Threading.h rename : src/server/shared/ProgressBar.cpp => src/server/shared/Utilities/ProgressBar.cpp rename : src/server/shared/ProgressBar.h => src/server/shared/Utilities/ProgressBar.h rename : src/server/shared/ServiceWin32.cpp => src/server/shared/Utilities/ServiceWin32.cpp rename : src/server/shared/ServiceWin32.h => src/server/shared/Utilities/ServiceWin32.h rename : src/server/shared/SignalHandler.h => src/server/shared/Utilities/SignalHandler.h rename : src/server/shared/Timer.h => src/server/shared/Utilities/Timer.h rename : src/server/shared/Util.cpp => src/server/shared/Utilities/Util.cpp rename : src/server/shared/Util.h => src/server/shared/Utilities/Util.h rename : src/server/worldserver/CliRunnable.cpp => src/server/worldserver/CommandLine/CliRunnable.cpp rename : src/server/worldserver/CliRunnable.h => src/server/worldserver/CommandLine/CliRunnable.h rename : src/server/worldserver/RASocket.cpp => src/server/worldserver/RemoteAccess/RASocket.cpp rename : src/server/worldserver/RASocket.h => src/server/worldserver/RemoteAccess/RASocket.h rename : src/server/worldserver/WorldRunnable.cpp => src/server/worldserver/WorldThread/WorldRunnable.cpp rename : src/server/worldserver/WorldRunnable.h => src/server/worldserver/WorldThread/WorldRunnable.h
Diffstat (limited to 'src/server/game/Scripting')
-rw-r--r--src/server/game/Scripting/ScriptLoader.cpp1023
-rw-r--r--src/server/game/Scripting/ScriptLoader.h10
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp549
-rw-r--r--src/server/game/Scripting/ScriptMgr.h163
-rw-r--r--src/server/game/Scripting/ScriptSystem.cpp248
-rw-r--r--src/server/game/Scripting/ScriptSystem.h100
6 files changed, 2093 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp
new file mode 100644
index 00000000000..2006c091287
--- /dev/null
+++ b/src/server/game/Scripting/ScriptLoader.cpp
@@ -0,0 +1,1023 @@
+/* Copyright (C) 2008 - 2010 TrinityCore <http://www.trinitycore.org>
+ * 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
+ */
+
+#include "ScriptedPch.h"
+
+#ifdef WIN32
+ #define DO_SCRIPTS
+#endif
+
+#ifdef DO_SCRIPTS
+//custom
+
+//examples
+void AddSC_example_creature();
+void AddSC_example_escort();
+void AddSC_example_gossip_codebox();
+void AddSC_example_misc();
+
+//world
+void AddSC_areatrigger_scripts();
+void AddSC_boss_emeriss();
+void AddSC_boss_taerar();
+void AddSC_boss_ysondre();
+void AddSC_generic_creature();
+void AddSC_go_scripts();
+void AddSC_guards();
+void AddSC_item_scripts();
+void AddSC_npc_professions();
+void AddSC_npc_innkeeper();
+void AddSC_npcs_special();
+void AddSC_npc_taxi();
+
+//eastern kingdoms
+void AddSC_alterac_valley(); //Alterac Valley
+void AddSC_boss_balinda();
+void AddSC_boss_drekthar();
+void AddSC_boss_galvangar();
+void AddSC_boss_vanndar();
+void AddSC_blackrock_depths(); //Blackrock Depths
+void AddSC_boss_ambassador_flamelash();
+void AddSC_boss_anubshiah();
+void AddSC_boss_draganthaurissan();
+void AddSC_boss_general_angerforge();
+void AddSC_boss_gorosh_the_dervish();
+void AddSC_boss_grizzle();
+void AddSC_boss_high_interrogator_gerstahn();
+void AddSC_boss_magmus();
+void AddSC_boss_moira_bronzebeard();
+void AddSC_boss_tomb_of_seven();
+void AddSC_instance_blackrock_depths();
+void AddSC_blackrock_spire(); //Blackrock Spire
+void AddSC_boss_drakkisath();
+void AddSC_boss_halycon();
+void AddSC_boss_highlordomokk();
+void AddSC_boss_mothersmolderweb();
+void AddSC_boss_overlordwyrmthalak();
+void AddSC_boss_shadowvosh();
+void AddSC_boss_thebeast();
+void AddSC_boss_warmastervoone();
+void AddSC_boss_quatermasterzigris();
+void AddSC_boss_pyroguard_emberseer();
+void AddSC_boss_gyth();
+void AddSC_boss_rend_blackhand();
+void AddSC_instance_blackrock_spire();
+void AddSC_boss_razorgore(); //Blackwing lair
+void AddSC_boss_vael();
+void AddSC_boss_broodlord();
+void AddSC_boss_firemaw();
+void AddSC_boss_ebonroc();
+void AddSC_boss_flamegor();
+void AddSC_boss_chromaggus();
+void AddSC_boss_nefarian();
+void AddSC_boss_victor_nefarius();
+void AddSC_boss_mr_smite();
+void AddSC_deadmines(); //Deadmines
+void AddSC_instance_deadmines();
+void AddSC_gnomeregan(); //Gnomeregan
+void AddSC_instance_gnomeregan();
+void AddSC_boss_attumen(); //Karazhan
+void AddSC_boss_curator();
+void AddSC_boss_maiden_of_virtue();
+void AddSC_boss_shade_of_aran();
+void AddSC_boss_malchezaar();
+void AddSC_boss_terestian_illhoof();
+void AddSC_boss_moroes();
+void AddSC_bosses_opera();
+void AddSC_boss_netherspite();
+void AddSC_instance_karazhan();
+void AddSC_karazhan();
+void AddSC_boss_nightbane();
+void AddSC_boss_felblood_kaelthas(); // Magister's Terrace
+void AddSC_boss_selin_fireheart();
+void AddSC_boss_vexallus();
+void AddSC_boss_priestess_delrissa();
+void AddSC_instance_magisters_terrace();
+void AddSC_magisters_terrace();
+void AddSC_boss_lucifron(); //Molten core
+void AddSC_boss_magmadar();
+void AddSC_boss_gehennas();
+void AddSC_boss_garr();
+void AddSC_boss_baron_geddon();
+void AddSC_boss_shazzrah();
+void AddSC_boss_golemagg();
+void AddSC_boss_sulfuron();
+void AddSC_boss_majordomo();
+void AddSC_boss_ragnaros();
+void AddSC_instance_molten_core();
+void AddSC_molten_core();
+void AddSC_the_scarlet_enclave(); //Scarlet Enclave
+void AddSC_the_scarlet_enclave_c1();
+void AddSC_the_scarlet_enclave_c2();
+void AddSC_the_scarlet_enclave_c5();
+void AddSC_boss_arcanist_doan(); //Scarlet Monastery
+void AddSC_boss_azshir_the_sleepless();
+void AddSC_boss_bloodmage_thalnos();
+void AddSC_boss_headless_horseman();
+void AddSC_boss_herod();
+void AddSC_boss_high_inquisitor_fairbanks();
+void AddSC_boss_houndmaster_loksey();
+void AddSC_boss_interrogator_vishas();
+void AddSC_boss_scorn();
+void AddSC_instance_scarlet_monastery();
+void AddSC_boss_mograine_and_whitemane();
+void AddSC_boss_darkmaster_gandling(); //Scholomance
+void AddSC_boss_death_knight_darkreaver();
+void AddSC_boss_theolenkrastinov();
+void AddSC_boss_illuciabarov();
+void AddSC_boss_instructormalicia();
+void AddSC_boss_jandicebarov();
+void AddSC_boss_kormok();
+void AddSC_boss_lordalexeibarov();
+void AddSC_boss_lorekeeperpolkelt();
+void AddSC_boss_rasfrost();
+void AddSC_boss_theravenian();
+void AddSC_boss_vectus();
+void AddSC_instance_scholomance();
+void AddSC_shadowfang_keep(); //Shadowfang keep
+void AddSC_instance_shadowfang_keep();
+void AddSC_boss_magistrate_barthilas(); //Stratholme
+void AddSC_boss_maleki_the_pallid();
+void AddSC_boss_nerubenkan();
+void AddSC_boss_cannon_master_willey();
+void AddSC_boss_baroness_anastari();
+void AddSC_boss_ramstein_the_gorger();
+void AddSC_boss_timmy_the_cruel();
+void AddSC_boss_postmaster_malown();
+void AddSC_boss_baron_rivendare();
+void AddSC_boss_dathrohan_balnazzar();
+void AddSC_boss_order_of_silver_hand();
+void AddSC_instance_stratholme();
+void AddSC_stratholme();
+void AddSC_sunken_temple(); // Sunken Temple
+void AddSC_instance_sunken_temple();
+void AddSC_instance_sunwell_plateau(); //Sunwell Plateau
+void AddSC_boss_kalecgos();
+void AddSC_boss_brutallus();
+void AddSC_boss_felmyst();
+void AddSC_boss_eredar_twins();
+void AddSC_boss_muru();
+void AddSC_boss_kiljaeden();
+void AddSC_sunwell_plateau();
+void AddSC_boss_archaedas(); //Uldaman
+void AddSC_boss_ironaya();
+void AddSC_uldaman();
+void AddSC_instance_uldaman();
+void AddSC_boss_akilzon(); //Zul'Aman
+void AddSC_boss_halazzi();
+void AddSC_boss_hex_lord_malacrass();
+void AddSC_boss_janalai();
+void AddSC_boss_nalorakk();
+void AddSC_boss_zuljin();
+void AddSC_instance_zulaman();
+void AddSC_zulaman();
+void AddSC_boss_jeklik(); //Zul'Gurub
+void AddSC_boss_venoxis();
+void AddSC_boss_marli();
+void AddSC_boss_mandokir();
+void AddSC_boss_gahzranka();
+void AddSC_boss_thekal();
+void AddSC_boss_arlokk();
+void AddSC_boss_jindo();
+void AddSC_boss_hakkar();
+void AddSC_boss_grilek();
+void AddSC_boss_hazzarah();
+void AddSC_boss_renataki();
+void AddSC_boss_wushoolay();
+void AddSC_instance_zulgurub();
+
+//void AddSC_alterac_mountains();
+void AddSC_arathi_highlands();
+void AddSC_blasted_lands();
+void AddSC_boss_kruul();
+void AddSC_burning_steppes();
+void AddSC_dun_morogh();
+void AddSC_duskwood();
+void AddSC_eastern_plaguelands();
+void AddSC_elwynn_forest();
+void AddSC_eversong_woods();
+void AddSC_ghostlands();
+void AddSC_hinterlands();
+void AddSC_ironforge();
+void AddSC_isle_of_queldanas();
+void AddSC_loch_modan();
+void AddSC_redridge_mountains();
+void AddSC_searing_gorge();
+void AddSC_silvermoon_city();
+void AddSC_silverpine_forest();
+void AddSC_stormwind_city();
+void AddSC_stranglethorn_vale();
+void AddSC_tirisfal_glades();
+void AddSC_undercity();
+void AddSC_western_plaguelands();
+void AddSC_westfall();
+void AddSC_wetlands();
+
+//kalimdor
+void AddSC_blackfathom_deeps(); //Blackfathom Depths
+void AddSC_boss_gelihast();
+void AddSC_boss_kelris();
+void AddSC_boss_aku_mai();
+void AddSC_instance_blackfathom_deeps();
+void AddSC_hyjal(); //CoT Battle for Mt. Hyjal
+void AddSC_boss_archimonde();
+void AddSC_instance_mount_hyjal();
+void AddSC_hyjal_trash();
+void AddSC_boss_rage_winterchill();
+void AddSC_boss_anetheron();
+void AddSC_boss_kazrogal();
+void AddSC_boss_azgalor();
+void AddSC_boss_captain_skarloc(); //CoT Old Hillsbrad
+void AddSC_boss_epoch_hunter();
+void AddSC_boss_lieutenant_drake();
+void AddSC_instance_old_hillsbrad();
+void AddSC_old_hillsbrad();
+void AddSC_boss_aeonus(); //CoT The Dark Portal
+void AddSC_boss_chrono_lord_deja();
+void AddSC_boss_temporus();
+void AddSC_dark_portal();
+void AddSC_instance_dark_portal();
+void AddSC_boss_epoch(); //CoT Culling Of Stratholme
+void AddSC_boss_infinite_corruptor();
+void AddSC_boss_salramm();
+void AddSC_boss_mal_ganis();
+void AddSC_boss_meathook();
+void AddSC_culling_of_stratholme();
+void AddSC_instance_culling_of_stratholme();
+void AddSC_boss_celebras_the_cursed(); //Maraudon
+void AddSC_boss_landslide();
+void AddSC_boss_noxxion();
+void AddSC_boss_ptheradras();
+void AddSC_boss_onyxia(); //Onyxia's Lair
+void AddSC_instance_onyxias_lair();
+void AddSC_boss_amnennar_the_coldbringer(); //Razorfen Downs
+void AddSC_razorfen_downs();
+void AddSC_instance_razorfen_downs();
+void AddSC_razorfen_kraul(); //Razorfen Kraul
+void AddSC_boss_kurinnaxx(); //Ruins of ahn'qiraj
+void AddSC_boss_rajaxx();
+void AddSC_boss_moam();
+void AddSC_boss_buru();
+void AddSC_boss_ayamiss();
+void AddSC_boss_ossirian();
+void AddSC_instance_ruins_of_ahnqiraj();
+void AddSC_boss_cthun(); //Temple of ahn'qiraj
+void AddSC_boss_fankriss();
+void AddSC_boss_huhuran();
+void AddSC_bug_trio();
+void AddSC_boss_sartura();
+void AddSC_boss_skeram();
+void AddSC_boss_twinemperors();
+void AddSC_mob_anubisath_sentinel();
+void AddSC_instance_temple_of_ahnqiraj();
+void AddSC_wailing_caverns(); //Wailing caverns
+void AddSC_instance_wailing_caverns();
+void AddSC_zulfarrak(); //Zul'Farrak generic
+void AddSC_instance_zulfarrak(); //Zul'Farrak instance script
+
+void AddSC_ashenvale();
+void AddSC_azshara();
+void AddSC_azuremyst_isle();
+void AddSC_bloodmyst_isle();
+void AddSC_boss_azuregos();
+void AddSC_darkshore();
+void AddSC_desolace();
+void AddSC_durotar();
+void AddSC_dustwallow_marsh();
+void AddSC_felwood();
+void AddSC_feralas();
+void AddSC_moonglade();
+void AddSC_mulgore();
+void AddSC_orgrimmar();
+void AddSC_silithus();
+void AddSC_stonetalon_mountains();
+void AddSC_tanaris();
+void AddSC_teldrassil();
+void AddSC_the_barrens();
+void AddSC_thousand_needles();
+void AddSC_thunder_bluff();
+void AddSC_ungoro_crater();
+void AddSC_winterspring();
+
+//northrend
+void AddSC_boss_slad_ran();
+void AddSC_boss_moorabi();
+void AddSC_boss_drakkari_colossus();
+void AddSC_boss_gal_darah();
+void AddSC_boss_eck();
+void AddSC_instance_gundrak();
+void AddSC_boss_krik_thir(); //Azjol-Nerub
+void AddSC_boss_hadronox();
+void AddSC_boss_anub_arak();
+void AddSC_instance_azjol_nerub();
+void AddSC_instance_ahnkahet(); //Azjol-Nerub Ahn'kahet
+void AddSC_boss_amanitar();
+void AddSC_boss_taldaram();
+void AddSC_boss_jedoga_shadowseeker();
+void AddSC_boss_elder_nadox();
+void AddSC_boss_volazj();
+void AddSC_boss_argent_challenge(); //Trial of the Champion
+void AddSC_boss_black_knight();
+void AddSC_boss_grand_champions();
+void AddSC_instance_trial_of_the_champion();
+void AddSC_trial_of_the_champion();
+void AddSC_boss_anubrekhan(); //Naxxramas
+void AddSC_boss_maexxna();
+void AddSC_boss_patchwerk();
+void AddSC_boss_grobbulus();
+void AddSC_boss_razuvious();
+void AddSC_boss_kelthuzad();
+void AddSC_boss_loatheb();
+void AddSC_boss_noth();
+void AddSC_boss_gluth();
+void AddSC_boss_sapphiron();
+void AddSC_boss_four_horsemen();
+void AddSC_boss_faerlina();
+void AddSC_boss_heigan();
+void AddSC_boss_gothik();
+void AddSC_boss_thaddius();
+void AddSC_instance_naxxramas();
+void AddSC_boss_magus_telestra(); //The Nexus Nexus
+void AddSC_boss_anomalus();
+void AddSC_boss_ormorok();
+void AddSC_boss_keristrasza();
+void AddSC_instance_nexus();
+void AddSC_boss_drakos(); //The Nexus The Oculus
+void AddSC_boss_urom();
+void AddSC_instance_oculus();
+void AddSC_oculus();
+void AddSC_boss_sartharion(); //Obsidian Sanctum
+void AddSC_instance_obsidian_sanctum();
+void AddSC_boss_bjarngrim(); //Ulduar Halls of Lightning
+void AddSC_boss_loken();
+void AddSC_boss_ionar();
+void AddSC_boss_volkhan();
+void AddSC_instance_halls_of_lightning();
+void AddSC_boss_maiden_of_grief(); //Ulduar Halls of Stone
+void AddSC_boss_krystallus();
+void AddSC_boss_sjonnir();
+void AddSC_instance_halls_of_stone();
+void AddSC_halls_of_stone();
+void AddSC_boss_auriaya(); //Ulduar Ulduar
+void AddSC_boss_flame_leviathan();
+void AddSC_boss_ignis();
+void AddSC_boss_razorscale();
+void AddSC_boss_xt002();
+void AddSC_boss_kologarn();
+void AddSC_boss_assembly_of_iron();
+void AddSC_ulduar_teleporter();
+void AddSC_instance_ulduar();
+void AddSC_boss_keleseth(); //Utgarde Keep
+void AddSC_boss_skarvald_dalronn();
+void AddSC_boss_ingvar_the_plunderer();
+void AddSC_instance_utgarde_keep();
+void AddSC_boss_svala(); //Utgarde pinnacle
+void AddSC_boss_palehoof();
+void AddSC_boss_skadi();
+void AddSC_boss_ymiron();
+void AddSC_instance_utgarde_pinnacle();
+void AddSC_utgarde_keep();
+void AddSC_boss_archavon(); //Vault of Archavon
+void AddSC_boss_emalon();
+void AddSC_boss_koralon();
+void AddSC_boss_toravon();
+void AddSC_instance_archavon();
+void AddSC_boss_trollgore(); //Drak'Tharon Keep
+void AddSC_boss_novos();
+void AddSC_boss_dred();
+void AddSC_boss_tharon_ja();
+void AddSC_instance_drak_tharon();
+void AddSC_boss_cyanigosa(); //Violet Hold
+void AddSC_boss_erekem();
+void AddSC_boss_ichoron();
+void AddSC_boss_lavanthor();
+void AddSC_boss_moragg();
+void AddSC_boss_xevozz();
+void AddSC_boss_zuramat();
+void AddSC_instance_violet_hold();
+void AddSC_violet_hold();
+void AddSC_instance_forge_of_souls(); //Forge of Souls
+void AddSC_forge_of_souls();
+void AddSC_boss_bronjahm();
+void AddSC_boss_devourer_of_souls();
+void AddSC_instance_pit_of_saron(); //Pit of Saron
+void AddSC_pit_of_saron();
+void AddSC_boss_garfrost();
+void AddSC_boss_ick();
+void AddSC_boss_tyrannus();
+void AddSC_instance_halls_of_reflection(); // Halls of Reflection
+void AddSC_halls_of_reflection();
+void AddSC_boss_falric();
+void AddSC_boss_marwyn();
+
+void AddSC_dalaran();
+void AddSC_borean_tundra();
+void AddSC_dragonblight();
+void AddSC_grizzly_hills();
+void AddSC_howling_fjord();
+void AddSC_icecrown();
+void AddSC_sholazar_basin();
+void AddSC_storm_peaks();
+void AddSC_zuldrak();
+void AddSC_crystalsong_forest();
+
+//outland
+void AddSC_boss_exarch_maladaar(); //Auchindoun Auchenai Crypts
+void AddSC_boss_shirrak_the_dead_watcher();
+void AddSC_boss_nexusprince_shaffar(); //Auchindoun Mana Tombs
+void AddSC_boss_pandemonius();
+void AddSC_boss_darkweaver_syth(); //Auchindoun Sekketh Halls
+void AddSC_boss_talon_king_ikiss();
+void AddSC_instance_sethekk_halls();
+void AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth
+void AddSC_boss_ambassador_hellmaw();
+void AddSC_boss_blackheart_the_inciter();
+void AddSC_boss_grandmaster_vorpil();
+void AddSC_boss_murmur();
+void AddSC_black_temple(); //Black Temple
+void AddSC_boss_illidan();
+void AddSC_boss_shade_of_akama();
+void AddSC_boss_supremus();
+void AddSC_boss_gurtogg_bloodboil();
+void AddSC_boss_mother_shahraz();
+void AddSC_boss_reliquary_of_souls();
+void AddSC_boss_teron_gorefiend();
+void AddSC_boss_najentus();
+void AddSC_boss_illidari_council();
+void AddSC_instance_black_temple();
+void AddSC_boss_fathomlord_karathress(); //CR Serpent Shrine Cavern
+void AddSC_boss_hydross_the_unstable();
+void AddSC_boss_lady_vashj();
+void AddSC_boss_leotheras_the_blind();
+void AddSC_boss_morogrim_tidewalker();
+void AddSC_instance_serpentshrine_cavern();
+void AddSC_boss_the_lurker_below();
+void AddSC_boss_hydromancer_thespia(); //CR Steam Vault
+void AddSC_boss_mekgineer_steamrigger();
+void AddSC_boss_warlord_kalithresh();
+void AddSC_instance_steam_vault();
+void AddSC_boss_hungarfen(); //CR Underbog
+void AddSC_boss_the_black_stalker();
+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_kelidan_the_breaker();
+void AddSC_boss_the_maker();
+void AddSC_instance_blood_furnace();
+void AddSC_boss_magtheridon(); //HC Magtheridon's Lair
+void AddSC_instance_magtheridons_lair();
+void AddSC_boss_grand_warlock_nethekurse(); //HC Shattered Halls
+void AddSC_boss_warbringer_omrogg();
+void AddSC_boss_warchief_kargath_bladefist();
+void AddSC_instance_shattered_halls();
+void AddSC_boss_watchkeeper_gargolmar(); //HC Ramparts
+void AddSC_boss_omor_the_unscarred();
+void AddSC_boss_vazruden_the_herald();
+void AddSC_instance_ramparts();
+void AddSC_arcatraz(); //TK Arcatraz
+void AddSC_boss_harbinger_skyriss();
+void AddSC_instance_arcatraz();
+void AddSC_boss_high_botanist_freywinn(); //TK Botanica
+void AddSC_boss_laj();
+void AddSC_boss_warp_splinter();
+void AddSC_boss_alar(); //TK The Eye
+void AddSC_boss_kaelthas();
+void AddSC_boss_void_reaver();
+void AddSC_boss_high_astromancer_solarian();
+void AddSC_instance_the_eye();
+void AddSC_the_eye();
+void AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar
+void AddSC_boss_nethermancer_sepethrea();
+void AddSC_boss_pathaleon_the_calculator();
+void AddSC_instance_mechanar();
+
+void AddSC_blades_edge_mountains();
+void AddSC_boss_doomlordkazzak();
+void AddSC_boss_doomwalker();
+void AddSC_hellfire_peninsula();
+void AddSC_nagrand();
+void AddSC_netherstorm();
+void AddSC_shadowmoon_valley();
+void AddSC_shattrath_city();
+void AddSC_terokkar_forest();
+void AddSC_zangarmarsh();
+void AddSC_onevents();
+
+#endif
+
+void AddScripts()
+{
+#ifdef DO_SCRIPTS
+
+ //custom
+
+ //examples
+ AddSC_example_creature();
+ AddSC_example_escort();
+ AddSC_example_gossip_codebox();
+ AddSC_example_misc();
+
+ //world
+ AddSC_areatrigger_scripts();
+ AddSC_boss_emeriss();
+ AddSC_boss_taerar();
+ AddSC_boss_ysondre();
+ AddSC_generic_creature();
+ AddSC_go_scripts();
+ AddSC_guards();
+ AddSC_item_scripts();
+ AddSC_npc_professions();
+ AddSC_npc_innkeeper();
+ AddSC_npcs_special();
+ AddSC_npc_taxi();
+
+ //eastern kingdoms
+ AddSC_alterac_valley(); //Alterac Valley
+ AddSC_boss_balinda();
+ AddSC_boss_drekthar();
+ AddSC_boss_galvangar();
+ AddSC_boss_vanndar();
+ AddSC_blackrock_depths(); //Blackrock Depths
+ AddSC_boss_ambassador_flamelash();
+ AddSC_boss_anubshiah();
+ AddSC_boss_draganthaurissan();
+ AddSC_boss_general_angerforge();
+ AddSC_boss_gorosh_the_dervish();
+ AddSC_boss_grizzle();
+ AddSC_boss_high_interrogator_gerstahn();
+ AddSC_boss_magmus();
+ AddSC_boss_moira_bronzebeard();
+ AddSC_boss_tomb_of_seven();
+ AddSC_instance_blackrock_depths();
+ AddSC_blackrock_spire(); //Blackrock Spire
+ AddSC_boss_drakkisath();
+ AddSC_boss_halycon();
+ AddSC_boss_highlordomokk();
+ AddSC_boss_mothersmolderweb();
+ AddSC_boss_overlordwyrmthalak();
+ AddSC_boss_shadowvosh();
+ AddSC_boss_thebeast();
+ AddSC_boss_warmastervoone();
+ AddSC_boss_quatermasterzigris();
+ AddSC_boss_pyroguard_emberseer();
+ AddSC_boss_gyth();
+ AddSC_boss_rend_blackhand();
+ AddSC_instance_blackrock_spire();
+ AddSC_boss_razorgore(); //Blackwing lair
+ AddSC_boss_vael();
+ AddSC_boss_broodlord();
+ AddSC_boss_firemaw();
+ AddSC_boss_ebonroc();
+ AddSC_boss_flamegor();
+ AddSC_boss_chromaggus();
+ AddSC_boss_nefarian();
+ AddSC_boss_victor_nefarius();
+ AddSC_boss_mr_smite();
+ AddSC_deadmines(); //Deadmines
+ AddSC_instance_deadmines();
+ AddSC_gnomeregan(); //Gnomeregan
+ AddSC_instance_gnomeregan();
+ AddSC_boss_attumen(); //Karazhan
+ AddSC_boss_curator();
+ AddSC_boss_maiden_of_virtue();
+ AddSC_boss_shade_of_aran();
+ AddSC_boss_malchezaar();
+ AddSC_boss_terestian_illhoof();
+ AddSC_boss_moroes();
+ AddSC_bosses_opera();
+ AddSC_boss_netherspite();
+ AddSC_instance_karazhan();
+ AddSC_karazhan();
+ AddSC_boss_nightbane();
+ AddSC_boss_felblood_kaelthas(); // Magister's Terrace
+ AddSC_boss_selin_fireheart();
+ AddSC_boss_vexallus();
+ AddSC_boss_priestess_delrissa();
+ AddSC_instance_magisters_terrace();
+ AddSC_magisters_terrace();
+ AddSC_boss_lucifron(); //Molten core
+ AddSC_boss_magmadar();
+ AddSC_boss_gehennas();
+ AddSC_boss_garr();
+ AddSC_boss_baron_geddon();
+ AddSC_boss_shazzrah();
+ AddSC_boss_golemagg();
+ AddSC_boss_sulfuron();
+ AddSC_boss_majordomo();
+ AddSC_boss_ragnaros();
+ AddSC_instance_molten_core();
+ AddSC_molten_core();
+ AddSC_the_scarlet_enclave(); //Scarlet Enclave
+ AddSC_the_scarlet_enclave_c1();
+ AddSC_the_scarlet_enclave_c2();
+ AddSC_the_scarlet_enclave_c5();
+ AddSC_boss_arcanist_doan(); //Scarlet Monastery
+ AddSC_boss_azshir_the_sleepless();
+ AddSC_boss_bloodmage_thalnos();
+ AddSC_boss_headless_horseman();
+ AddSC_boss_herod();
+ AddSC_boss_high_inquisitor_fairbanks();
+ AddSC_boss_houndmaster_loksey();
+ AddSC_boss_interrogator_vishas();
+ AddSC_boss_scorn();
+ AddSC_instance_scarlet_monastery();
+ AddSC_boss_mograine_and_whitemane();
+ AddSC_boss_darkmaster_gandling(); //Scholomance
+ AddSC_boss_death_knight_darkreaver();
+ AddSC_boss_theolenkrastinov();
+ AddSC_boss_illuciabarov();
+ AddSC_boss_instructormalicia();
+ AddSC_boss_jandicebarov();
+ AddSC_boss_kormok();
+ AddSC_boss_lordalexeibarov();
+ AddSC_boss_lorekeeperpolkelt();
+ AddSC_boss_rasfrost();
+ AddSC_boss_theravenian();
+ AddSC_boss_vectus();
+ AddSC_instance_scholomance();
+ AddSC_shadowfang_keep(); //Shadowfang keep
+ AddSC_instance_shadowfang_keep();
+ AddSC_boss_magistrate_barthilas(); //Stratholme
+ AddSC_boss_maleki_the_pallid();
+ AddSC_boss_nerubenkan();
+ AddSC_boss_cannon_master_willey();
+ AddSC_boss_baroness_anastari();
+ AddSC_boss_ramstein_the_gorger();
+ AddSC_boss_timmy_the_cruel();
+ AddSC_boss_postmaster_malown();
+ AddSC_boss_baron_rivendare();
+ AddSC_boss_dathrohan_balnazzar();
+ AddSC_boss_order_of_silver_hand();
+ AddSC_instance_stratholme();
+ AddSC_stratholme();
+ AddSC_sunken_temple(); // Sunken Temple
+ AddSC_instance_sunken_temple();
+ AddSC_instance_sunwell_plateau(); //Sunwell Plateau
+ AddSC_boss_kalecgos();
+ AddSC_boss_brutallus();
+ AddSC_boss_felmyst();
+ AddSC_boss_eredar_twins();
+ AddSC_boss_muru();
+ AddSC_boss_kiljaeden();
+ AddSC_sunwell_plateau();
+ AddSC_boss_archaedas(); //Uldaman
+ AddSC_boss_ironaya();
+ AddSC_uldaman();
+ AddSC_instance_uldaman();
+ AddSC_boss_akilzon(); //Zul'Aman
+ AddSC_boss_halazzi();
+ AddSC_boss_hex_lord_malacrass();
+ AddSC_boss_janalai();
+ AddSC_boss_nalorakk();
+ AddSC_boss_zuljin();
+ AddSC_instance_zulaman();
+ AddSC_zulaman();
+ AddSC_boss_jeklik(); //Zul'Gurub
+ AddSC_boss_venoxis();
+ AddSC_boss_marli();
+ AddSC_boss_mandokir();
+ AddSC_boss_gahzranka();
+ AddSC_boss_thekal();
+ AddSC_boss_arlokk();
+ AddSC_boss_jindo();
+ AddSC_boss_hakkar();
+ AddSC_boss_grilek();
+ AddSC_boss_hazzarah();
+ AddSC_boss_renataki();
+ AddSC_boss_wushoolay();
+ AddSC_instance_zulgurub();
+
+ //AddSC_alterac_mountains();
+ AddSC_arathi_highlands();
+ AddSC_blasted_lands();
+ AddSC_boss_kruul();
+ AddSC_burning_steppes();
+ AddSC_dun_morogh();
+ AddSC_duskwood();
+ AddSC_eastern_plaguelands();
+ AddSC_elwynn_forest();
+ AddSC_eversong_woods();
+ AddSC_ghostlands();
+ AddSC_hinterlands();
+ AddSC_ironforge();
+ AddSC_isle_of_queldanas();
+ AddSC_loch_modan();
+ AddSC_redridge_mountains();
+ AddSC_searing_gorge();
+ AddSC_silvermoon_city();
+ AddSC_silverpine_forest();
+ AddSC_stormwind_city();
+ AddSC_stranglethorn_vale();
+ AddSC_tirisfal_glades();
+ AddSC_undercity();
+ AddSC_western_plaguelands();
+ AddSC_westfall();
+ AddSC_wetlands();
+
+ //kalimdor
+ AddSC_blackfathom_deeps(); //Blackfathom Depths
+ AddSC_boss_gelihast();
+ AddSC_boss_kelris();
+ AddSC_boss_aku_mai();
+ AddSC_instance_blackfathom_deeps();
+ AddSC_hyjal(); //CoT Battle for Mt. Hyjal
+ AddSC_boss_archimonde();
+ AddSC_instance_mount_hyjal();
+ AddSC_hyjal_trash();
+ AddSC_boss_rage_winterchill();
+ AddSC_boss_anetheron();
+ AddSC_boss_kazrogal();
+ AddSC_boss_azgalor();
+ AddSC_boss_captain_skarloc(); //CoT Old Hillsbrad
+ AddSC_boss_epoch_hunter();
+ AddSC_boss_lieutenant_drake();
+ AddSC_instance_old_hillsbrad();
+ AddSC_old_hillsbrad();
+ AddSC_boss_aeonus(); //CoT The Dark Portal
+ AddSC_boss_chrono_lord_deja();
+ AddSC_boss_temporus();
+ AddSC_dark_portal();
+ AddSC_instance_dark_portal();
+ AddSC_boss_epoch(); //CoT Culling Of Stratholme
+ AddSC_boss_infinite_corruptor();
+ AddSC_boss_salramm();
+ AddSC_boss_mal_ganis();
+ AddSC_boss_meathook();
+ AddSC_culling_of_stratholme();
+ AddSC_instance_culling_of_stratholme();
+ AddSC_boss_celebras_the_cursed(); //Maraudon
+ AddSC_boss_landslide();
+ AddSC_boss_noxxion();
+ AddSC_boss_ptheradras();
+ AddSC_boss_onyxia(); //Onyxia's Lair
+ AddSC_instance_onyxias_lair();
+ AddSC_boss_amnennar_the_coldbringer(); //Razorfen Downs
+ AddSC_razorfen_downs();
+ AddSC_instance_razorfen_downs();
+ AddSC_razorfen_kraul(); //Razorfen Kraul
+ AddSC_boss_kurinnaxx(); //Ruins of ahn'qiraj
+ AddSC_boss_rajaxx();
+ AddSC_boss_moam();
+ AddSC_boss_buru();
+ AddSC_boss_ayamiss();
+ AddSC_boss_ossirian();
+ AddSC_instance_ruins_of_ahnqiraj();
+ AddSC_boss_cthun(); //Temple of ahn'qiraj
+ AddSC_boss_fankriss();
+ AddSC_boss_huhuran();
+ AddSC_bug_trio();
+ AddSC_boss_sartura();
+ AddSC_boss_skeram();
+ AddSC_boss_twinemperors();
+ AddSC_mob_anubisath_sentinel();
+ AddSC_instance_temple_of_ahnqiraj();
+ AddSC_wailing_caverns(); //Wailing caverns
+ AddSC_instance_wailing_caverns();
+ AddSC_zulfarrak(); //Zul'Farrak generic
+ AddSC_instance_zulfarrak(); //Zul'Farrak instance script
+
+ AddSC_ashenvale();
+ AddSC_azshara();
+ AddSC_azuremyst_isle();
+ AddSC_bloodmyst_isle();
+ AddSC_boss_azuregos();
+ AddSC_darkshore();
+ AddSC_desolace();
+ AddSC_durotar();
+ AddSC_dustwallow_marsh();
+ AddSC_felwood();
+ AddSC_feralas();
+ AddSC_moonglade();
+ AddSC_mulgore();
+ AddSC_orgrimmar();
+ AddSC_silithus();
+ AddSC_stonetalon_mountains();
+ AddSC_tanaris();
+ AddSC_teldrassil();
+ AddSC_the_barrens();
+ AddSC_thousand_needles();
+ AddSC_thunder_bluff();
+ AddSC_ungoro_crater();
+ AddSC_winterspring();
+
+ //northrend
+ AddSC_boss_slad_ran(); //Gundrak
+ AddSC_boss_moorabi();
+ AddSC_boss_drakkari_colossus();
+ AddSC_boss_gal_darah();
+ AddSC_boss_eck();
+ AddSC_instance_gundrak();
+ AddSC_boss_amanitar();
+ AddSC_boss_taldaram(); //Azjol-Nerub Ahn'kahet
+ AddSC_boss_elder_nadox();
+ AddSC_boss_jedoga_shadowseeker();
+ AddSC_boss_volazj();
+ AddSC_instance_ahnkahet();
+ AddSC_boss_argent_challenge(); //Trial of the Champion
+ AddSC_boss_black_knight();
+ AddSC_boss_grand_champions();
+ AddSC_instance_trial_of_the_champion();
+ AddSC_trial_of_the_champion();
+ AddSC_boss_krik_thir(); //Azjol-Nerub Azjol-Nerub
+ AddSC_boss_hadronox();
+ AddSC_boss_anub_arak();
+ AddSC_instance_azjol_nerub();
+ AddSC_boss_anubrekhan(); //Naxxramas
+ AddSC_boss_maexxna();
+ AddSC_boss_patchwerk();
+ AddSC_boss_grobbulus();
+ AddSC_boss_razuvious();
+ AddSC_boss_kelthuzad();
+ AddSC_boss_loatheb();
+ AddSC_boss_noth();
+ AddSC_boss_gluth();
+ AddSC_boss_sapphiron();
+ AddSC_boss_four_horsemen();
+ AddSC_boss_faerlina();
+ AddSC_boss_heigan();
+ AddSC_boss_gothik();
+ AddSC_boss_thaddius();
+ AddSC_instance_naxxramas();
+ AddSC_boss_magus_telestra(); //The Nexus Nexus
+ AddSC_boss_anomalus();
+ AddSC_boss_ormorok();
+ AddSC_boss_keristrasza();
+ AddSC_instance_nexus();
+ AddSC_boss_drakos(); //The Nexus The Oculus
+ AddSC_boss_urom();
+ AddSC_instance_oculus();
+ AddSC_oculus();
+ AddSC_boss_sartharion(); //Obsidian Sanctum
+ AddSC_instance_obsidian_sanctum();
+ AddSC_boss_bjarngrim(); //Ulduar Halls of Lightning
+ AddSC_boss_loken();
+ AddSC_boss_ionar();
+ AddSC_boss_volkhan();
+ AddSC_instance_halls_of_lightning();
+ AddSC_boss_maiden_of_grief(); //Ulduar Halls of Stone
+ AddSC_boss_krystallus();
+ AddSC_boss_sjonnir();
+ AddSC_instance_halls_of_stone();
+ AddSC_halls_of_stone();
+ AddSC_boss_auriaya(); //Ulduar Ulduar
+ AddSC_boss_flame_leviathan();
+ AddSC_boss_ignis();
+ AddSC_boss_razorscale();
+ AddSC_boss_xt002();
+ AddSC_boss_assembly_of_iron();
+ AddSC_boss_kologarn();
+ AddSC_ulduar_teleporter();
+ AddSC_instance_ulduar();
+ AddSC_boss_keleseth(); //Utgarde Keep
+ AddSC_boss_skarvald_dalronn();
+ AddSC_boss_ingvar_the_plunderer();
+ AddSC_instance_utgarde_keep();
+ AddSC_boss_svala(); //Utgarde pinnacle
+ AddSC_boss_palehoof();
+ AddSC_boss_skadi();
+ AddSC_boss_ymiron();
+ AddSC_instance_utgarde_pinnacle();
+ AddSC_utgarde_keep();
+ AddSC_boss_archavon(); //Vault of Archavon
+ AddSC_boss_emalon();
+ AddSC_boss_koralon();
+ AddSC_boss_toravon();
+ AddSC_instance_archavon();
+ AddSC_boss_trollgore(); //Drak'Tharon Keep
+ AddSC_boss_novos();
+ AddSC_boss_dred();
+ AddSC_boss_tharon_ja();
+ AddSC_instance_drak_tharon();
+ AddSC_boss_cyanigosa(); //Violet Hold
+ AddSC_boss_erekem();
+ AddSC_boss_ichoron();
+ AddSC_boss_lavanthor();
+ AddSC_boss_moragg();
+ AddSC_boss_xevozz();
+ AddSC_boss_zuramat();
+ AddSC_instance_violet_hold();
+ AddSC_violet_hold();
+ AddSC_instance_forge_of_souls(); //Forge of Souls
+ AddSC_forge_of_souls();
+ AddSC_boss_bronjahm();
+ AddSC_boss_devourer_of_souls();
+ AddSC_instance_pit_of_saron(); //Pit of Saron
+ AddSC_pit_of_saron();
+ AddSC_boss_garfrost();
+ AddSC_boss_ick();
+ AddSC_boss_tyrannus();
+ AddSC_instance_halls_of_reflection(); // Halls of Reflection
+ AddSC_halls_of_reflection();
+ AddSC_boss_falric();
+ AddSC_boss_marwyn();
+
+ AddSC_dalaran();
+ AddSC_borean_tundra();
+ AddSC_dragonblight();
+ AddSC_grizzly_hills();
+ AddSC_howling_fjord();
+ AddSC_icecrown();
+ AddSC_sholazar_basin();
+ AddSC_storm_peaks();
+ AddSC_zuldrak();
+ AddSC_crystalsong_forest();
+
+ //outland
+ AddSC_boss_exarch_maladaar(); //Auchindoun Auchenai Crypts
+ AddSC_boss_shirrak_the_dead_watcher();
+ AddSC_boss_nexusprince_shaffar(); //Auchindoun Mana Tombs
+ AddSC_boss_pandemonius();
+ AddSC_boss_darkweaver_syth(); //Auchindoun Sekketh Halls
+ AddSC_boss_talon_king_ikiss();
+ AddSC_instance_sethekk_halls();
+ AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth
+ AddSC_boss_ambassador_hellmaw();
+ AddSC_boss_blackheart_the_inciter();
+ AddSC_boss_grandmaster_vorpil();
+ AddSC_boss_murmur();
+ AddSC_black_temple(); //Black Temple
+ AddSC_boss_illidan();
+ AddSC_boss_shade_of_akama();
+ AddSC_boss_supremus();
+ AddSC_boss_gurtogg_bloodboil();
+ AddSC_boss_mother_shahraz();
+ AddSC_boss_reliquary_of_souls();
+ AddSC_boss_teron_gorefiend();
+ AddSC_boss_najentus();
+ AddSC_boss_illidari_council();
+ AddSC_instance_black_temple();
+ AddSC_boss_fathomlord_karathress(); //CR Serpent Shrine Cavern
+ AddSC_boss_hydross_the_unstable();
+ AddSC_boss_lady_vashj();
+ AddSC_boss_leotheras_the_blind();
+ AddSC_boss_morogrim_tidewalker();
+ AddSC_instance_serpentshrine_cavern();
+ AddSC_boss_the_lurker_below();
+ AddSC_boss_hydromancer_thespia(); //CR Steam Vault
+ AddSC_boss_mekgineer_steamrigger();
+ AddSC_boss_warlord_kalithresh();
+ AddSC_instance_steam_vault();
+ AddSC_boss_hungarfen(); //CR Underbog
+ AddSC_boss_the_black_stalker();
+ AddSC_boss_gruul(); //Gruul's Lair
+ AddSC_boss_high_king_maulgar();
+ AddSC_instance_gruuls_lair();
+ AddSC_boss_broggok(); //HC Blood Furnace
+ AddSC_boss_kelidan_the_breaker();
+ AddSC_boss_the_maker();
+ AddSC_instance_blood_furnace();
+ AddSC_boss_magtheridon(); //HC Magtheridon's Lair
+ AddSC_instance_magtheridons_lair();
+ AddSC_boss_grand_warlock_nethekurse(); //HC Shattered Halls
+ AddSC_boss_warbringer_omrogg();
+ AddSC_boss_warchief_kargath_bladefist();
+ AddSC_instance_shattered_halls();
+ AddSC_boss_watchkeeper_gargolmar(); //HC Ramparts
+ AddSC_boss_omor_the_unscarred();
+ AddSC_boss_vazruden_the_herald();
+ AddSC_instance_ramparts();
+ AddSC_arcatraz(); //TK Arcatraz
+ AddSC_boss_harbinger_skyriss();
+ AddSC_instance_arcatraz();
+ AddSC_boss_high_botanist_freywinn(); //TK Botanica
+ AddSC_boss_laj();
+ AddSC_boss_warp_splinter();
+ AddSC_boss_alar(); //TK The Eye
+ AddSC_boss_kaelthas();
+ AddSC_boss_void_reaver();
+ AddSC_boss_high_astromancer_solarian();
+ AddSC_instance_the_eye();
+ AddSC_the_eye();
+ AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar
+ AddSC_boss_nethermancer_sepethrea();
+ AddSC_boss_pathaleon_the_calculator();
+ AddSC_instance_mechanar();
+
+ AddSC_blades_edge_mountains();
+ AddSC_boss_doomlordkazzak();
+ AddSC_boss_doomwalker();
+ AddSC_hellfire_peninsula();
+ AddSC_nagrand();
+ AddSC_netherstorm();
+ AddSC_shadowmoon_valley();
+ AddSC_shattrath_city();
+ AddSC_terokkar_forest();
+ AddSC_zangarmarsh();
+ AddSC_onevents();
+
+#endif
+}
diff --git a/src/server/game/Scripting/ScriptLoader.h b/src/server/game/Scripting/ScriptLoader.h
new file mode 100644
index 00000000000..57fb7d821f1
--- /dev/null
+++ b/src/server/game/Scripting/ScriptLoader.h
@@ -0,0 +1,10 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+* This program is free software licensed under GPL version 2
+* Please see the included DOCS/LICENSE.TXT for more information */
+
+#ifndef SC_SCRIPTLOADER_H
+#define SC_SCRIPTLOADER_H
+
+void AddScripts();
+
+#endif
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
new file mode 100644
index 00000000000..2dcfd258942
--- /dev/null
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -0,0 +1,549 @@
+/* Copyright (C) 2006 - 2008 TrinityScript <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software licensed under GPL version 2
+ * Please see the included DOCS/LICENSE.TXT for more information */
+
+#include "ScriptedPch.h"
+#include "Config/Config.h"
+#include "Database/DatabaseEnv.h"
+#include "DBCStores.h"
+#include "ObjectMgr.h"
+#include "ProgressBar.h"
+#include "ScriptLoader.h"
+#include "ScriptSystem.h"
+#include "Policies/SingletonImp.h"
+
+INSTANTIATE_SINGLETON_1(ScriptMgr);
+
+int num_sc_scripts;
+Script *m_scripts[MAX_SCRIPTS];
+
+void FillSpellSummary();
+void LoadOverridenSQLData();
+
+void ScriptMgr::LoadDatabase()
+{
+ pSystemMgr.LoadVersion();
+ pSystemMgr.LoadScriptTexts();
+ pSystemMgr.LoadScriptTextsCustom();
+ pSystemMgr.LoadScriptWaypoints();
+}
+
+struct TSpellSummary {
+ uint8 Targets; // set of enum SelectTarget
+ uint8 Effects; // set of enum SelectEffect
+}extern *SpellSummary;
+
+ScriptMgr::ScriptMgr()
+{
+
+}
+ScriptMgr::~ScriptMgr()
+{
+
+}
+
+void ScriptMgr::ScriptsInit()
+{
+ //Trinity Script startup
+ outstring_log(" _____ _ _ _ ____ _ _");
+ outstring_log("|_ _| __(_)_ __ (_) |_ _ _/ ___| ___ _ __(_)_ __ | |_ ");
+ outstring_log(" | || '__| | '_ \\| | __| | | \\___ \\ / __| \'__| | \'_ \\| __|");
+ outstring_log(" | || | | | | | | | |_| |_| |___) | (__| | | | |_) | |_ ");
+ outstring_log(" |_||_| |_|_| |_|_|\\__|\\__, |____/ \\___|_| |_| .__/ \\__|");
+ outstring_log(" |___/ |_| ");
+ outstring_log("");
+ outstring_log("");
+
+ //Load database (must be called after SD2Config.SetSource).
+ LoadDatabase();
+
+ outstring_log("TSCR: Loading C++ scripts");
+ barGoLink bar(1);
+ bar.step();
+ outstring_log("");
+
+ for (uint16 i =0; i<MAX_SCRIPTS; ++i)
+ m_scripts[i]=NULL;
+
+ FillSpellSummary();
+
+ AddScripts();
+
+ outstring_log(">> Loaded %i C++ Scripts.", num_sc_scripts);
+
+ outstring_log(">> Load Overriden SQL Data.");
+ LoadOverridenSQLData();
+}
+
+//*********************************
+//*** Functions used globally ***
+
+void DoScriptText(int32 iTextEntry, WorldObject* pSource, Unit* pTarget)
+{
+ if (!pSource)
+ {
+ error_log("TSCR: DoScriptText entry %i, invalid Source pointer.", iTextEntry);
+ return;
+ }
+
+ if (iTextEntry >= 0)
+ {
+ error_log("TSCR: DoScriptText with source entry %u (TypeId=%u, guid=%u) attempts to process text entry %i, but text entry must be negative.", pSource->GetEntry(), pSource->GetTypeId(), pSource->GetGUIDLow(), iTextEntry);
+ return;
+ }
+
+ const StringTextData* pData = pSystemMgr.GetTextData(iTextEntry);
+
+ if (!pData)
+ {
+ error_log("TSCR: DoScriptText with source entry %u (TypeId=%u, guid=%u) could not find text entry %i.", pSource->GetEntry(), pSource->GetTypeId(), pSource->GetGUIDLow(), iTextEntry);
+ return;
+ }
+
+ debug_log("TSCR: DoScriptText: text entry=%i, Sound=%u, Type=%u, Language=%u, Emote=%u", iTextEntry, pData->uiSoundId, pData->uiType, pData->uiLanguage, pData->uiEmote);
+
+ if (pData->uiSoundId)
+ {
+ if (GetSoundEntriesStore()->LookupEntry(pData->uiSoundId))
+ {
+ pSource->SendPlaySound(pData->uiSoundId, false);
+ }
+ else
+ error_log("TSCR: DoScriptText entry %i tried to process invalid sound id %u.", iTextEntry, pData->uiSoundId);
+ }
+
+ if (pData->uiEmote)
+ {
+ if (pSource->GetTypeId() == TYPEID_UNIT || pSource->GetTypeId() == TYPEID_PLAYER)
+ ((Unit*)pSource)->HandleEmoteCommand(pData->uiEmote);
+ else
+ error_log("TSCR: DoScriptText entry %i tried to process emote for invalid TypeId (%u).", iTextEntry, pSource->GetTypeId());
+ }
+
+ switch(pData->uiType)
+ {
+ case CHAT_TYPE_SAY:
+ pSource->MonsterSay(iTextEntry, pData->uiLanguage, pTarget ? pTarget->GetGUID() : 0);
+ break;
+ case CHAT_TYPE_YELL:
+ pSource->MonsterYell(iTextEntry, pData->uiLanguage, pTarget ? pTarget->GetGUID() : 0);
+ break;
+ case CHAT_TYPE_TEXT_EMOTE:
+ pSource->MonsterTextEmote(iTextEntry, pTarget ? pTarget->GetGUID() : 0);
+ break;
+ case CHAT_TYPE_BOSS_EMOTE:
+ pSource->MonsterTextEmote(iTextEntry, pTarget ? pTarget->GetGUID() : 0, true);
+ break;
+ case CHAT_TYPE_WHISPER:
+ {
+ if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER)
+ pSource->MonsterWhisper(iTextEntry, pTarget->GetGUID());
+ else
+ error_log("TSCR: DoScriptText entry %i cannot whisper without target unit (TYPEID_PLAYER).", iTextEntry);
+ }
+ break;
+ case CHAT_TYPE_BOSS_WHISPER:
+ {
+ if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER)
+ pSource->MonsterWhisper(iTextEntry, pTarget->GetGUID(), true);
+ else
+ error_log("TSCR: DoScriptText entry %i cannot whisper without target unit (TYPEID_PLAYER).", iTextEntry);
+ }
+ break;
+ case CHAT_TYPE_ZONE_YELL:
+ pSource->MonsterYellToZone(iTextEntry, pData->uiLanguage, pTarget ? pTarget->GetGUID() : 0);
+ break;
+ }
+}
+
+void Script::RegisterSelf()
+{
+ // try to find scripts which try to use another script's allocated memory
+ // that means didn't allocate memory for script
+ for (uint16 i = 0; i < MAX_SCRIPTS; ++i)
+ {
+ // somebody forgot to allocate memory for a script by a method like this: newscript = new Script
+ if (m_scripts[i] == this)
+ {
+ error_log("ScriptName: '%s' - Forgot to allocate memory, so this script and/or the script before that can't work.", Name.c_str());
+ // don't register it
+ // and don't delete it because its memory is used for another script
+ return;
+ }
+ }
+
+ int id = GetScriptId(Name.c_str());
+ if (id)
+ {
+ // try to find the script in assigned scripts
+ bool IsExist = false;
+ for (uint16 i = 0; i < MAX_SCRIPTS; ++i)
+ {
+ if (m_scripts[i])
+ {
+ // if the assigned script's name and the new script's name is the same
+ if (m_scripts[i]->Name == Name)
+ {
+ IsExist = true;
+ break;
+ }
+ }
+ }
+
+ // if the script doesn't assigned -> assign it!
+ if (!IsExist)
+ {
+ m_scripts[id] = this;
+ ++num_sc_scripts;
+ }
+ // if the script is already assigned -> delete it!
+ else
+ {
+ // TODO: write a better error message than this one :)
+ error_log("ScriptName: '%s' already assigned with the same ScriptName, so the script can't work.", Name.c_str());
+ delete this;
+ }
+ }
+ else
+ {
+ if (Name.find("example") == std::string::npos)
+ error_db_log("TrinityScript: RegisterSelf, but script named %s does not have ScriptName assigned in database.",(this)->Name.c_str());
+ delete this;
+ }
+}
+
+void ScriptMgr::OnLogin(Player *pPlayer)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnLogin) return;
+ tmpscript->pOnLogin(pPlayer);
+}
+
+void ScriptMgr::OnLogout(Player *pPlayer)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnLogout) return;
+ tmpscript->pOnLogout(pPlayer);
+}
+
+void ScriptMgr::OnPVPKill(Player *killer, Player *killed)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnPVPKill) return;
+ tmpscript->pOnPVPKill(killer, killed);
+}
+
+bool ScriptMgr::OnSpellCast (Unit *pUnitTarget, Item *pItemTarget, GameObject *pGoTarget, uint32 i, SpellEntry const *spell)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnSpellCast) return true;
+ return tmpscript->pOnSpellCast(pUnitTarget,pItemTarget,pGoTarget,i,spell);
+}
+
+uint32 ScriptMgr::OnGetXP(Player *pPlayer, uint32 amount)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnGetXP) return amount;
+ return tmpscript->pOnGetXP(pPlayer,amount);
+}
+
+uint32 ScriptMgr::OnGetMoney(Player *pPlayer, int32 amount)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnGetMoney) return amount;
+ return tmpscript->pOnGetMoney(pPlayer,amount);
+}
+
+bool ScriptMgr::OnPlayerChat(Player *pPlayer, const char *text)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnPlayerChat) return true;
+ return tmpscript->pOnPlayerChat(pPlayer,text);
+}
+
+void ScriptMgr::OnServerStartup()
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnServerStartup) return;
+ tmpscript->pOnServerStartup();
+}
+
+void ScriptMgr::OnServerShutdown()
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnServerShutdown) return;
+ tmpscript->pOnServerShutdown();
+}
+
+void ScriptMgr::OnAreaChange(Player *pPlayer, AreaTableEntry const *pArea)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnAreaChange) return;
+ tmpscript->pOnAreaChange(pPlayer, pArea);
+}
+
+bool ScriptMgr::OnItemClick (Player *pPlayer, Item *pItem)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnItemClick) return true;
+ return tmpscript->pOnItemClick(pPlayer,pItem);
+}
+
+bool ScriptMgr::OnItemOpen (Player *pPlayer, Item *pItem)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnItemOpen) return true;
+ return tmpscript->pOnItemOpen(pPlayer,pItem);
+}
+
+bool ScriptMgr::OnGoClick (Player *pPlayer, GameObject *pGameObject)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnGoClick) return true;
+ return tmpscript->pOnGoClick(pPlayer,pGameObject);
+}
+
+void ScriptMgr::OnCreatureKill (Player *pPlayer, Creature *pCreature)
+{
+ Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")];
+ if (!tmpscript || !tmpscript->pOnCreatureKill) return;
+ tmpscript->pOnCreatureKill(pPlayer,pCreature);
+}
+
+char const* ScriptMgr::ScriptsVersion()
+{
+ return "Integrated Trinity Scripts";
+}
+
+bool ScriptMgr::GossipHello (Player * pPlayer, Creature* pCreature)
+{
+ Script *tmpscript = m_scripts[pCreature->GetScriptId()];
+ if (!tmpscript || !tmpscript->pGossipHello) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pGossipHello(pPlayer, pCreature);
+}
+
+bool ScriptMgr::GossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
+{
+ debug_log("TSCR: Gossip selection, sender: %d, action: %d", uiSender, uiAction);
+
+ Script *tmpscript = m_scripts[pCreature->GetScriptId()];
+ if (!tmpscript || !tmpscript->pGossipSelect) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pGossipSelect(pPlayer, pCreature, uiSender, uiAction);
+}
+
+bool ScriptMgr::GossipSelectWithCode(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction, const char* sCode)
+{
+ debug_log("TSCR: Gossip selection with code, sender: %d, action: %d", uiSender, uiAction);
+
+ Script *tmpscript = m_scripts[pCreature->GetScriptId()];
+ if (!tmpscript || !tmpscript->pGossipSelectWithCode) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pGossipSelectWithCode(pPlayer, pCreature, uiSender, uiAction, sCode);
+}
+
+bool ScriptMgr::GOSelect(Player* pPlayer, GameObject* pGO, uint32 uiSender, uint32 uiAction)
+{
+ if (!pGO)
+ return false;
+ debug_log("TSCR: Gossip selection, sender: %d, action: %d", uiSender, uiAction);
+
+ Script *tmpscript = m_scripts[pGO->GetGOInfo()->ScriptId];
+ if (!tmpscript || !tmpscript->pGOSelect) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pGOSelect(pPlayer, pGO, uiSender, uiAction);
+}
+
+bool ScriptMgr::GOSelectWithCode(Player* pPlayer, GameObject* pGO, uint32 uiSender, uint32 uiAction, const char* sCode)
+{
+ if (!pGO)
+ return false;
+ debug_log("TSCR: Gossip selection, sender: %d, action: %d",uiSender, uiAction);
+
+ Script *tmpscript = m_scripts[pGO->GetGOInfo()->ScriptId];
+ if (!tmpscript || !tmpscript->pGOSelectWithCode) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pGOSelectWithCode(pPlayer, pGO, uiSender ,uiAction, sCode);
+}
+
+bool ScriptMgr::QuestAccept(Player* pPlayer, Creature* pCreature, Quest const* pQuest)
+{
+ Script *tmpscript = m_scripts[pCreature->GetScriptId()];
+ if (!tmpscript || !tmpscript->pQuestAccept) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pQuestAccept(pPlayer, pCreature, pQuest);
+}
+
+bool ScriptMgr::QuestSelect(Player* pPlayer, Creature* pCreature, Quest const* pQuest)
+{
+ Script *tmpscript = m_scripts[pCreature->GetScriptId()];
+ if (!tmpscript || !tmpscript->pQuestSelect) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pQuestSelect(pPlayer, pCreature, pQuest);
+}
+
+bool ScriptMgr::QuestComplete(Player* pPlayer, Creature* pCreature, Quest const* pQuest)
+{
+ Script *tmpscript = m_scripts[pCreature->GetScriptId()];
+ if (!tmpscript || !tmpscript->pQuestComplete) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pQuestComplete(pPlayer, pCreature, pQuest);
+}
+
+bool ScriptMgr::ChooseReward(Player* pPlayer, Creature* pCreature, Quest const* pQuest, uint32 opt)
+{
+ Script *tmpscript = m_scripts[pCreature->GetScriptId()];
+ if (!tmpscript || !tmpscript->pChooseReward) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pChooseReward(pPlayer, pCreature, pQuest, opt);
+}
+
+uint32 ScriptMgr::NPCDialogStatus(Player* pPlayer, Creature* pCreature)
+{
+ Script *tmpscript = m_scripts[pCreature->GetScriptId()];
+ if (!tmpscript || !tmpscript->pNPCDialogStatus) return 100;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pNPCDialogStatus(pPlayer, pCreature);
+}
+
+uint32 ScriptMgr::GODialogStatus(Player* pPlayer, GameObject* pGO)
+{
+ Script *tmpscript = m_scripts[pGO->GetGOInfo()->ScriptId];
+ if (!tmpscript || !tmpscript->pGODialogStatus) return 100;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pGODialogStatus(pPlayer, pGO);
+}
+
+bool ScriptMgr::ItemHello(Player* pPlayer, Item* pItem, Quest const* pQuest)
+{
+ Script *tmpscript = m_scripts[pItem->GetProto()->ScriptId];
+ if (!tmpscript || !tmpscript->pItemHello) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pItemHello(pPlayer, pItem, pQuest);
+}
+
+bool ScriptMgr::ItemQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest)
+{
+ Script *tmpscript = m_scripts[pItem->GetProto()->ScriptId];
+ if (!tmpscript || !tmpscript->pItemQuestAccept) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pItemQuestAccept(pPlayer, pItem, pQuest);
+}
+
+bool ScriptMgr::GOHello(Player* pPlayer, GameObject* pGO)
+{
+ Script *tmpscript = m_scripts[pGO->GetGOInfo()->ScriptId];
+ if (!tmpscript || !tmpscript->pGOHello) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pGOHello(pPlayer, pGO);
+}
+
+bool ScriptMgr::GOQuestAccept(Player* pPlayer, GameObject* pGO, Quest const* pQuest)
+{
+ Script *tmpscript = m_scripts[pGO->GetGOInfo()->ScriptId];
+ if (!tmpscript || !tmpscript->pGOQuestAccept) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pGOQuestAccept(pPlayer, pGO, pQuest);
+}
+
+bool ScriptMgr::GOChooseReward(Player* pPlayer, GameObject* pGO, Quest const* pQuest, uint32 opt)
+{
+ Script *tmpscript = m_scripts[pGO->GetGOInfo()->ScriptId];
+ if (!tmpscript || !tmpscript->pGOChooseReward) return false;
+
+ pPlayer->PlayerTalkClass->ClearMenus();
+ return tmpscript->pGOChooseReward(pPlayer, pGO, pQuest, opt);
+}
+
+void ScriptMgr::GODestroyed(Player* pPlayer, GameObject* pGO, uint32 destroyedEvent)
+{
+ Script *tmpscript = m_scripts[pGO->GetGOInfo()->ScriptId];
+ if (!tmpscript) return;
+ tmpscript->pGODestroyed(pPlayer, pGO, destroyedEvent);
+}
+
+bool ScriptMgr::AreaTrigger(Player* pPlayer, AreaTriggerEntry const* atEntry)
+{
+ Script *tmpscript = m_scripts[GetAreaTriggerScriptId(atEntry->id)];
+ if (!tmpscript || !tmpscript->pAreaTrigger) return false;
+
+ return tmpscript->pAreaTrigger(pPlayer, atEntry);
+}
+
+CreatureAI* ScriptMgr::GetAI(Creature* pCreature)
+{
+ Script *tmpscript = m_scripts[pCreature->GetScriptId()];
+ if (!tmpscript || !tmpscript->GetAI) return NULL;
+
+ return tmpscript->GetAI(pCreature);
+}
+
+bool ScriptMgr::ItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets)
+{
+ Script *tmpscript = m_scripts[pItem->GetProto()->ScriptId];
+ if (!tmpscript || !tmpscript->pItemUse) return false;
+
+ return tmpscript->pItemUse(pPlayer, pItem, targets);
+}
+
+bool ScriptMgr::ItemExpire(Player* pPlayer, ItemPrototype const * pItemProto)
+{
+ Script *tmpscript = m_scripts[pItemProto->ScriptId];
+ if (!tmpscript || !tmpscript->pItemExpire) return true;
+
+ return tmpscript->pItemExpire(pPlayer, pItemProto);
+}
+
+bool ScriptMgr::EffectDummyCreature(Unit *caster, uint32 spellId, uint32 effIndex, Creature *crTarget)
+{
+ Script *tmpscript = m_scripts[crTarget->GetScriptId()];
+
+ if (!tmpscript || !tmpscript->pEffectDummyCreature) return false;
+
+ return tmpscript->pEffectDummyCreature(caster, spellId, effIndex, crTarget);
+}
+
+bool ScriptMgr::EffectDummyGameObj(Unit *caster, uint32 spellId, uint32 effIndex, GameObject *gameObjTarget)
+{
+ Script *tmpscript = m_scripts[gameObjTarget->GetGOInfo()->ScriptId];
+
+ if (!tmpscript || !tmpscript->pEffectDummyGameObj) return false;
+
+ return tmpscript->pEffectDummyGameObj(caster, spellId, effIndex, gameObjTarget);
+}
+
+bool ScriptMgr::EffectDummyItem(Unit *caster, uint32 spellId, uint32 effIndex, Item *itemTarget)
+{
+ Script *tmpscript = m_scripts[itemTarget->GetProto()->ScriptId];
+
+ if (!tmpscript || !tmpscript->pEffectDummyItem) return false;
+
+ return tmpscript->pEffectDummyItem(caster, spellId, effIndex, itemTarget);
+}
+
+InstanceData* ScriptMgr::CreateInstanceData(Map *map)
+{
+ if (!map->IsDungeon()) return NULL;
+
+ Script *tmpscript = m_scripts[((InstanceMap*)map)->GetScriptId()];
+ if (!tmpscript || !tmpscript->GetInstanceData) return NULL;
+
+ return tmpscript->GetInstanceData(map);
+}
+
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
new file mode 100644
index 00000000000..ed7200d5786
--- /dev/null
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -0,0 +1,163 @@
+/* Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
+ *
+ * Thanks to the original authors: ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ *
+ * This program is free software licensed under GPL version 2
+ * Please see the included DOCS/LICENSE.TXT for more information */
+
+#ifndef SC_SCRIPTMGR_H
+#define SC_SCRIPTMGR_H
+
+#include "Common.h"
+#include "Platform/CompilerDefs.h"
+#include "DBCStructure.h"
+#include "Config/ConfigEnv.h"
+
+class Player;
+class Creature;
+class CreatureAI;
+class InstanceData;
+class Quest;
+class Item;
+class GameObject;
+class SpellCastTargets;
+class Map;
+class Unit;
+class WorldObject;
+struct ItemPrototype;
+
+#define MAX_SCRIPTS 5000 //72 bytes each (approx 351kb)
+#define VISIBLE_RANGE (166.0f) //MAX visible range (size of grid)
+#define DEFAULT_TEXT "<Trinity Script Text Entry Missing!>"
+
+struct Script
+{
+ Script() :
+ pOnLogin(NULL), pOnLogout(NULL), pOnPVPKill(NULL), pOnSpellCast(NULL), pOnGetXP(NULL),
+ pOnGetMoney(NULL), pOnPlayerChat(NULL), pOnServerStartup(NULL), pOnServerShutdown(NULL),
+ pOnAreaChange(NULL), pOnItemClick(NULL), pOnItemOpen(NULL), pOnGoClick(NULL), pOnCreatureKill(NULL),
+ pGossipHello(NULL), pQuestAccept(NULL), pGossipSelect(NULL), pGossipSelectWithCode(NULL),
+ pGOSelect(NULL), pGOSelectWithCode(NULL),
+ pQuestSelect(NULL), pQuestComplete(NULL), pNPCDialogStatus(NULL), pGODialogStatus(NULL),
+ pChooseReward(NULL), pGODestroyed(NULL), pItemHello(NULL), pGOHello(NULL), pAreaTrigger(NULL), pItemQuestAccept(NULL),
+ pGOQuestAccept(NULL), pGOChooseReward(NULL),pItemUse(NULL), pItemExpire(NULL),
+ pEffectDummyCreature(NULL), pEffectDummyGameObj(NULL), pEffectDummyItem(NULL),
+ GetAI(NULL), GetInstanceData(NULL)
+ {}
+
+ std::string Name;
+
+ //Methods to be scripted
+ void (*pOnLogin)(Player*);
+ void (*pOnLogout)(Player*);
+ void (*pOnPVPKill)(Player*, Player*);
+ bool (*pOnSpellCast)(Unit*, Item*, GameObject*, uint32, SpellEntry const*);
+ uint32 (*pOnGetXP)(Player*, uint32);
+ int32 (*pOnGetMoney)(Player*, int32);
+ bool (*pOnPlayerChat)(Player*, const char*);
+ void (*pOnServerStartup)();
+ void (*pOnServerShutdown)();
+ void (*pOnAreaChange)(Player*, AreaTableEntry const*);
+ bool (*pOnItemClick)(Player*, Item*);
+ bool (*pOnItemOpen)(Player*, Item*);
+ bool (*pOnGoClick)(Player*, GameObject*);
+ void (*pOnCreatureKill)(Player*, Creature*);
+ bool (*pGossipHello)(Player*, Creature*);
+ bool (*pQuestAccept)(Player*, Creature*, Quest const*);
+ bool (*pGossipSelect)(Player*, Creature*, uint32 , uint32);
+ bool (*pGossipSelectWithCode)(Player*, Creature*, uint32 , uint32 , const char*);
+ bool (*pGOSelect)(Player*, GameObject*, uint32 , uint32);
+ bool (*pGOSelectWithCode)(Player*, GameObject*, uint32 , uint32 , const char*);
+ bool (*pQuestSelect)(Player*, Creature*, Quest const*);
+ bool (*pQuestComplete)(Player*, Creature*, Quest const*);
+ uint32 (*pNPCDialogStatus)(Player*, Creature*);
+ uint32 (*pGODialogStatus)(Player*, GameObject * _GO);
+ bool (*pChooseReward)(Player*, Creature*, Quest const*, uint32);
+ bool (*pItemHello)(Player*, Item*, Quest const*);
+ bool (*pGOHello)(Player*, GameObject*);
+ bool (*pAreaTrigger)(Player*, AreaTriggerEntry const*);
+ bool (*pItemQuestAccept)(Player*, Item *, Quest const*);
+ bool (*pGOQuestAccept)(Player*, GameObject*, Quest const*);
+ bool (*pGOChooseReward)(Player*, GameObject*, Quest const*, uint32);
+ void (*pGODestroyed)(Player*, GameObject*, uint32);
+ bool (*pItemUse)(Player*, Item*, SpellCastTargets const&);
+ bool (*pItemExpire)(Player*, ItemPrototype const *);
+ bool (*pEffectDummyCreature)(Unit*, uint32, uint32, Creature*);
+ bool (*pEffectDummyGameObj)(Unit*, uint32, uint32, GameObject*);
+ bool (*pEffectDummyItem)(Unit*, uint32, uint32, Item*);
+
+ CreatureAI* (*GetAI)(Creature*);
+ InstanceData* (*GetInstanceData)(Map*);
+
+ void RegisterSelf();
+};
+
+class ScriptMgr
+{
+ public:
+ ScriptMgr();
+ ~ScriptMgr();
+
+ void ScriptsInit();
+ void LoadDatabase();
+ char const* ScriptsVersion();
+
+ //event handlers
+ void OnLogin(Player *pPlayer);
+ void OnLogout(Player *pPlayer);
+ void OnPVPKill(Player *killer, Player *killed);
+ bool OnSpellCast (Unit *pUnitTarget, Item *pItemTarget, GameObject *pGoTarget, uint32 i, SpellEntry const *spell);
+ uint32 OnGetXP(Player *pPlayer, uint32 amount);
+ uint32 OnGetMoney(Player *pPlayer, int32 amount);
+ bool OnPlayerChat(Player *pPlayer, const char *text);
+ void OnServerStartup();
+ void OnServerShutdown();
+ void OnAreaChange(Player *pPlayer, AreaTableEntry const *pArea);
+ bool OnItemClick (Player *pPlayer, Item *pItem);
+ bool OnItemOpen (Player *pPlayer, Item *pItem);
+ bool OnGoClick (Player *pPlayer, GameObject *pGameObject);
+ void OnCreatureKill (Player *pPlayer, Creature *pCreature);
+ bool GossipHello (Player * pPlayer, Creature* pCreature);
+ bool GossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction);
+ bool GossipSelectWithCode(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction, const char* sCode);
+ bool GOSelect(Player* pPlayer, GameObject* pGO, uint32 uiSender, uint32 uiAction);
+ bool GOSelectWithCode(Player* pPlayer, GameObject* pGO, uint32 uiSender, uint32 uiAction, const char* sCode);
+ bool QuestAccept(Player* pPlayer, Creature* pCreature, Quest const* pQuest);
+ bool QuestSelect(Player* pPlayer, Creature* pCreature, Quest const* pQuest);
+ bool QuestComplete(Player* pPlayer, Creature* pCreature, Quest const* pQuest);
+ bool ChooseReward(Player* pPlayer, Creature* pCreature, Quest const* pQuest, uint32 opt);
+ uint32 NPCDialogStatus(Player* pPlayer, Creature* pCreature);
+ uint32 GODialogStatus(Player* pPlayer, GameObject* pGO);
+ bool ItemHello(Player* pPlayer, Item* pItem, Quest const* pQuest);
+ bool ItemQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest);
+ bool GOHello(Player* pPlayer, GameObject* pGO);
+ bool GOQuestAccept(Player* pPlayer, GameObject* pGO, Quest const* pQuest);
+ bool GOChooseReward(Player* pPlayer, GameObject* pGO, Quest const* pQuest, uint32 opt);
+ void GODestroyed(Player* pPlayer, GameObject* pGO, uint32 destroyedEvent);
+ bool AreaTrigger(Player* pPlayer,AreaTriggerEntry const* atEntry);
+ CreatureAI* GetAI(Creature* pCreature);
+ bool ItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets);
+ bool ItemExpire(Player* pPlayer, ItemPrototype const * pItemProto);
+ bool EffectDummyCreature(Unit *caster, uint32 spellId, uint32 effIndex, Creature *crTarget);
+ bool EffectDummyGameObj(Unit *caster, uint32 spellId, uint32 effIndex, GameObject *gameObjTarget);
+ bool EffectDummyItem(Unit *caster, uint32 spellId, uint32 effIndex, Item *itemTarget);
+ InstanceData* CreateInstanceData(Map *map);
+};
+
+//Config file accessors
+//std::string GetConfigValueStr(char const* option);
+//int32 GetConfigValueInt32(char const* option);
+//float GetConfigValueFloat(char const* option);
+
+//Generic scripting text function
+void DoScriptText(int32 textEntry, WorldObject* pSource, Unit *pTarget = NULL);
+
+#if COMPILER == COMPILER_GNU
+#define FUNC_PTR(name,callconvention,returntype,parameters) typedef returntype(*name)parameters __attribute__ ((callconvention));
+#else
+#define FUNC_PTR(name, callconvention, returntype, parameters) typedef returntype(callconvention *name)parameters;
+#endif
+
+#define sScriptMgr Trinity::Singleton<ScriptMgr>::Instance()
+#endif
+
diff --git a/src/server/game/Scripting/ScriptSystem.cpp b/src/server/game/Scripting/ScriptSystem.cpp
new file mode 100644
index 00000000000..0037b100412
--- /dev/null
+++ b/src/server/game/Scripting/ScriptSystem.cpp
@@ -0,0 +1,248 @@
+/*
+ * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
+ *
+ * Thanks to the original authors: MaNGOS <http://getmangos.com/>
+ *
+ * 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
+ */
+
+#include "ScriptedPch.h"
+#include "ScriptSystem.h"
+#include "ProgressBar.h"
+#include "ObjectMgr.h"
+#include "Database/DatabaseEnv.h"
+
+SystemMgr::SystemMgr()
+{
+}
+
+SystemMgr& SystemMgr::Instance()
+{
+ static SystemMgr pSysMgr;
+ return pSysMgr;
+}
+
+void SystemMgr::LoadVersion()
+{
+ //Get Version information
+ QueryResult_AutoPtr Result = WorldDatabase.Query("SELECT script_version FROM version LIMIT 1");
+
+ if (Result)
+ {
+ Field* pFields = Result->Fetch();
+
+ outstring_log("TSCR: Database version is: %s", pFields[0].GetString());
+ outstring_log("");
+ }
+ else
+ {
+ error_log("TSCR: Missing `version`.`script_version` information.");
+ outstring_log("");
+ }
+}
+
+void SystemMgr::LoadScriptTexts()
+{
+ outstring_log("TSCR: Loading Script Texts...");
+ LoadTrinityStrings(WorldDatabase,"script_texts",TEXT_SOURCE_RANGE,1+(TEXT_SOURCE_RANGE*2));
+
+ QueryResult_AutoPtr Result = WorldDatabase.Query("SELECT entry, sound, type, language, emote FROM script_texts");
+
+ outstring_log("TSCR: Loading Script Texts additional data...");
+
+ if (Result)
+ {
+ barGoLink bar(Result->GetRowCount());
+ uint32 uiCount = 0;
+
+ do
+ {
+ bar.step();
+ Field* pFields = Result->Fetch();
+ StringTextData pTemp;
+
+ int32 iId = pFields[0].GetInt32();
+ pTemp.uiSoundId = pFields[1].GetUInt32();
+ pTemp.uiType = pFields[2].GetUInt32();
+ pTemp.uiLanguage = pFields[3].GetUInt32();
+ pTemp.uiEmote = pFields[4].GetUInt32();
+
+ if (iId >= 0)
+ {
+ error_db_log("TSCR: Entry %i in table `script_texts` is not a negative value.", iId);
+ continue;
+ }
+
+ if (iId > TEXT_SOURCE_RANGE || iId <= TEXT_SOURCE_RANGE*2)
+ {
+ error_db_log("TSCR: Entry %i in table `script_texts` is out of accepted entry range for table.", iId);
+ continue;
+ }
+
+ if (pTemp.uiSoundId)
+ {
+ if (!GetSoundEntriesStore()->LookupEntry(pTemp.uiSoundId))
+ error_db_log("TSCR: Entry %i in table `script_texts` has soundId %u but sound does not exist.", iId, pTemp.uiSoundId);
+ }
+
+ if (!GetLanguageDescByID(pTemp.uiLanguage))
+ error_db_log("TSCR: Entry %i in table `script_texts` using Language %u but Language does not exist.", iId, pTemp.uiLanguage);
+
+ if (pTemp.uiType > CHAT_TYPE_ZONE_YELL)
+ error_db_log("TSCR: Entry %i in table `script_texts` has Type %u but this Chat Type does not exist.", iId, pTemp.uiType);
+
+ m_mTextDataMap[iId] = pTemp;
+ ++uiCount;
+ } while (Result->NextRow());
+
+ outstring_log("");
+ outstring_log(">> Loaded %u additional Script Texts data.", uiCount);
+ }
+ else
+ {
+ barGoLink bar(1);
+ bar.step();
+ outstring_log("");
+ outstring_log(">> Loaded 0 additional Script Texts data. DB table `script_texts` is empty.");
+ }
+}
+
+void SystemMgr::LoadScriptTextsCustom()
+{
+ outstring_log("TSCR: Loading Custom Texts...");
+ LoadTrinityStrings(WorldDatabase,"custom_texts",TEXT_SOURCE_RANGE*2,1+(TEXT_SOURCE_RANGE*3));
+
+ QueryResult_AutoPtr Result = WorldDatabase.Query("SELECT entry, sound, type, language, emote FROM custom_texts");
+
+ outstring_log("TSCR: Loading Custom Texts additional data...");
+
+ if (Result)
+ {
+ barGoLink bar(Result->GetRowCount());
+ uint32 uiCount = 0;
+
+ do
+ {
+ bar.step();
+ Field* pFields = Result->Fetch();
+ StringTextData pTemp;
+
+ int32 iId = pFields[0].GetInt32();
+ pTemp.uiSoundId = pFields[1].GetUInt32();
+ pTemp.uiType = pFields[2].GetUInt32();
+ pTemp.uiLanguage = pFields[3].GetUInt32();
+ pTemp.uiEmote = pFields[4].GetUInt32();
+
+ if (iId >= 0)
+ {
+ error_db_log("TSCR: Entry %i in table `custom_texts` is not a negative value.", iId);
+ continue;
+ }
+
+ if (iId > TEXT_SOURCE_RANGE*2 || iId <= TEXT_SOURCE_RANGE*3)
+ {
+ error_db_log("TSCR: Entry %i in table `custom_texts` is out of accepted entry range for table.", iId);
+ continue;
+ }
+
+ if (pTemp.uiSoundId)
+ {
+ if (!GetSoundEntriesStore()->LookupEntry(pTemp.uiSoundId))
+ error_db_log("TSCR: Entry %i in table `custom_texts` has soundId %u but sound does not exist.", iId, pTemp.uiSoundId);
+ }
+
+ if (!GetLanguageDescByID(pTemp.uiLanguage))
+ error_db_log("TSCR: Entry %i in table `custom_texts` using Language %u but Language does not exist.", iId, pTemp.uiLanguage);
+
+ if (pTemp.uiType > CHAT_TYPE_ZONE_YELL)
+ error_db_log("TSCR: Entry %i in table `custom_texts` has Type %u but this Chat Type does not exist.", iId, pTemp.uiType);
+
+ m_mTextDataMap[iId] = pTemp;
+ ++uiCount;
+ } while (Result->NextRow());
+
+ outstring_log("");
+ outstring_log(">> Loaded %u additional Custom Texts data.", uiCount);
+ }
+ else
+ {
+ barGoLink bar(1);
+ bar.step();
+ outstring_log("");
+ outstring_log(">> Loaded 0 additional Custom Texts data. DB table `custom_texts` is empty.");
+ }
+}
+
+void SystemMgr::LoadScriptWaypoints()
+{
+ // Drop Existing Waypoint list
+ m_mPointMoveMap.clear();
+
+ uint64 uiCreatureCount = 0;
+
+ // Load Waypoints
+ QueryResult_AutoPtr Result = WorldDatabase.Query("SELECT COUNT(entry) FROM script_waypoint GROUP BY entry");
+ if (Result)
+ uiCreatureCount = Result->GetRowCount();
+
+ outstring_log("TSCR: Loading Script Waypoints for %u creature(s)...", uiCreatureCount);
+
+ Result = WorldDatabase.Query("SELECT entry, pointid, location_x, location_y, location_z, waittime FROM script_waypoint ORDER BY pointid");
+
+ if (Result)
+ {
+ barGoLink bar(Result->GetRowCount());
+ uint32 uiNodeCount = 0;
+
+ do
+ {
+ bar.step();
+ Field* pFields = Result->Fetch();
+ ScriptPointMove pTemp;
+
+ pTemp.uiCreatureEntry = pFields[0].GetUInt32();
+ uint32 uiEntry = pTemp.uiCreatureEntry;
+ pTemp.uiPointId = pFields[1].GetUInt32();
+ pTemp.fX = pFields[2].GetFloat();
+ pTemp.fY = pFields[3].GetFloat();
+ pTemp.fZ = pFields[4].GetFloat();
+ pTemp.uiWaitTime = pFields[5].GetUInt32();
+
+ CreatureInfo const* pCInfo = GetCreatureTemplateStore(pTemp.uiCreatureEntry);
+
+ if (!pCInfo)
+ {
+ error_db_log("TSCR: DB table script_waypoint has waypoint for non-existant creature entry %u", pTemp.uiCreatureEntry);
+ continue;
+ }
+
+ if (!pCInfo->ScriptID)
+ error_db_log("TSCR: DB table script_waypoint has waypoint for creature entry %u, but creature does not have ScriptName defined and then useless.", pTemp.uiCreatureEntry);
+
+ m_mPointMoveMap[uiEntry].push_back(pTemp);
+ ++uiNodeCount;
+ } while (Result->NextRow());
+
+ outstring_log("");
+ outstring_log(">> Loaded %u Script Waypoint nodes.", uiNodeCount);
+ }
+ else
+ {
+ barGoLink bar(1);
+ bar.step();
+ outstring_log("");
+ outstring_log(">> Loaded 0 Script Waypoints. DB table `script_waypoint` is empty.");
+ }
+}
diff --git a/src/server/game/Scripting/ScriptSystem.h b/src/server/game/Scripting/ScriptSystem.h
new file mode 100644
index 00000000000..f78cd2e64fa
--- /dev/null
+++ b/src/server/game/Scripting/ScriptSystem.h
@@ -0,0 +1,100 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+* This program is free software licensed under GPL version 2
+* Please see the included DOCS/LICENSE.TXT for more information */
+
+#ifndef SC_SYSTEM_H
+#define SC_SYSTEM_H
+
+#define TEXT_SOURCE_RANGE -1000000 //the amount of entries each text source has available
+
+//TODO: find better namings and definitions.
+//N=Neutral, A=Alliance, H=Horde.
+//NEUTRAL or FRIEND = Hostility to player surroundings (not a good definition)
+//ACTIVE or PASSIVE = Hostility to environment surroundings.
+enum eEscortFaction
+{
+ FACTION_ESCORT_A_NEUTRAL_PASSIVE = 10,
+ FACTION_ESCORT_H_NEUTRAL_PASSIVE = 33,
+ FACTION_ESCORT_N_NEUTRAL_PASSIVE = 113,
+
+ FACTION_ESCORT_A_NEUTRAL_ACTIVE = 231,
+ FACTION_ESCORT_H_NEUTRAL_ACTIVE = 232,
+ FACTION_ESCORT_N_NEUTRAL_ACTIVE = 250,
+
+ FACTION_ESCORT_N_FRIEND_PASSIVE = 290,
+ FACTION_ESCORT_N_FRIEND_ACTIVE = 495,
+
+ FACTION_ESCORT_A_PASSIVE = 774,
+ FACTION_ESCORT_H_PASSIVE = 775,
+
+ FACTION_ESCORT_N_ACTIVE = 1986,
+ FACTION_ESCORT_H_ACTIVE = 2046
+};
+
+struct ScriptPointMove
+{
+ uint32 uiCreatureEntry;
+ uint32 uiPointId;
+ float fX;
+ float fY;
+ float fZ;
+ uint32 uiWaitTime;
+};
+
+struct StringTextData
+{
+ uint32 uiSoundId;
+ uint8 uiType;
+ uint32 uiLanguage;
+ uint32 uiEmote;
+};
+
+#define pSystemMgr SystemMgr::Instance()
+
+class SystemMgr
+{
+ public:
+ SystemMgr();
+ ~SystemMgr() {}
+
+ static SystemMgr& Instance();
+
+ //Maps and lists
+ typedef UNORDERED_MAP<int32, StringTextData> TextDataMap;
+ typedef UNORDERED_MAP<uint32, std::vector<ScriptPointMove> > PointMoveMap;
+
+ //Database
+ void LoadVersion();
+ void LoadScriptTexts();
+ void LoadScriptTextsCustom();
+ void LoadScriptWaypoints();
+
+ //Retrive from storage
+ StringTextData const* GetTextData(int32 uiTextId) const
+ {
+ TextDataMap::const_iterator itr = m_mTextDataMap.find(uiTextId);
+
+ if (itr == m_mTextDataMap.end())
+ return NULL;
+
+ return &itr->second;
+ }
+
+ std::vector<ScriptPointMove> const &GetPointMoveList(uint32 uiCreatureEntry) const
+ {
+ static std::vector<ScriptPointMove> vEmpty;
+
+ PointMoveMap::const_iterator itr = m_mPointMoveMap.find(uiCreatureEntry);
+
+ if (itr == m_mPointMoveMap.end())
+ return vEmpty;
+
+ return itr->second;
+ }
+
+ protected:
+ TextDataMap m_mTextDataMap; //additional data for text strings
+ PointMoveMap m_mPointMoveMap; //coordinates for waypoints
+};
+
+#endif