Commit Graph

174 Commits

Author SHA1 Message Date
ariel-
f913f3bb89 Core/Scripts: unified scripted gossip/quest api
- Changed self-accessor on GameObjectAI to "me", like UnitAI
- Moved all related functions to AI, now Unit and GameObject have the same function names with identical behaviour
- Remove "OnUpdate" from CreatureScript/GameObjectScript, was never used and we already have AI Update method
- Quest methods no longer return a bool, the return value was used to call the AI version if the ScriptMgr one returned false
- Implemented GameObjectAI::Destroyed hook (was never called), implemented Damaged method
- Rename OnStateChanged to OnLootStateChanged to reflect when it's really called, and created a new hook OnStateChanged that only gets called on GOState change
- Since the functions are now only getting called from AI, made GetAI methods full virtual. (CanSpawn method is anyways going to be used on creatures with AI)
2017-05-01 18:19:36 -03:00
ariel-
b6b59f6c23 Core/Scripts: remove OnDummyEffect hook/sOnDummyEffect ai hook
- Duplicated logic never used, sometimes only ScriptMgr version was called, sometimes only AI
- They only encourage bad scripting practices
- You can still use OnSpellHit or a SpellScript
2017-04-28 18:59:14 -03:00
ariel-
eac9c1f0b9 Core/Scripts: fix Nightfall proc chance and reduce it for victims with level above 60
Closes #15734
2017-02-21 22:38:30 -03:00
Kittnz
9d74252e8d Reverting: Game/Scripting: Add OnGameEvent hook for game objects. 2017-02-17 20:30:52 +01:00
Kittnz
a5ccbe9906 Fix tabs 2017-02-17 20:19:05 +01:00
Kittnz
343d2c7f91 Game/Scripting: Add OnGameEvent hook for game objects.
Called when specific game event starts
2017-02-17 20:16:22 +01:00
Kittnz
d550ba7392 Game/Scripting: Add OnPlayerRepop hook
Called when a player presses release when he died
2017-02-07 17:28:16 +01:00
tkrokli
6a51a88767 Update Copyright notice for 2017
Happy new year!
2017-01-02 19:52:45 +01:00
ariel-
cbb5c073ce Core/ScriptMgr: use vector instead of list to contain Spell and Aura scripts and hooks 2016-11-14 02:05:51 -03:00
Rochet2
c52566a888 Core/Scripts: Enhance quest status hook by making it catch more status changes (#17865) 2016-09-09 21:11:36 +02:00
treeston
a9f1151f2c Build fix. 2016-09-09 19:43:29 +02:00
treeston
91c2b3162d Game/Scripting: Follow-up to b3d44d6. Fix script selection for creatures on difficulty > 0. 2016-09-09 19:37:04 +02:00
treeston
3c32086b81 Core/Maps: Add override to allow InstanceMap const* -> InstanceScript const*.
Also tighten const-ness on CanSpawn method of CreatureScript.
2016-09-09 18:08:43 +02:00
treeston
b3d44d6c36 Creature/Scripting: Move CreatureAI::CanRespawn to CreatureScript::CanSpawn. Now also applies to initial spawn. Dynamic spawning prep. 2016-09-09 16:21:27 +02:00
Naios
445746c402 Core/Scripting: Fix acquiring of references between script swaps
* Delay unloading of shared libraries to the next update tick
  to prevent crashes in the destructor of the last referenced
  script instance.
* Closes #17557
2016-07-13 21:58:50 +02:00
Naios
eaf102b3c5 Core/Game: Rewrote the ScriptMgr to support script reloading.
* Finally this commit enables dynamic script hotswapping
  and finished the PR #15671.
* Split the storage layout to use optimized storages
  for database bound and unbound scripts.
* Add several unload workers to reload scripts correctly
  -> Requires further investigation.
* Fixes memory leaks in ScriptMgr when dropping invalid scripts.
* Fixes VehicleScripts
* Makes OutdoorPvP scripts reloadable
* Makes InstanceMapScripts reloadable
* Makes CommandScripts reloadable

(cherry picked from commit 9cc97f226d)
2016-04-11 21:42:28 +02:00
Naios
3123c278b9 Core/Game: Add a dynamic script reloader which reloads scripts modules on changes.
* is responsible for registering plain modules.
* requires compilation with the `WITH_DYNAMIC_LINKING` flag.
* requires further support of the ScriptMgr.

(cherry picked from commit bc0f2b6e5a)
2016-04-11 21:42:16 +02:00
Naios
775e0764e8 Core/Game: Move scheduled map scripts counter methods into MapManager
* Since those have nothing to do with core scripts and are
  not wished inside the ScriptMgr

(cherry picked from commit 59e3cf82ac)
2016-04-11 21:40:38 +02:00
Rochet2
2348613f7b Add missing GAME_API exports 2016-03-27 17:02:31 +03:00
Naios
9f61b72679 Core/Game: Converted the game library to a shared library.
* There is still the possibility to static link against game.

(cherry picked from commit bf33159a70)
2016-03-24 02:46:42 +01:00
Naios
96bc31924a CMake: Use inherited dependencies in scripts
* Removes the circular dependency between game <-> scripts
2016-03-18 02:53:00 +01:00
Shauren
5a6db6e84d Core/Misc: Minimize differences between branches in WorldSession::Update
This commit removes OnUnknownPacketReceive script hook - it could never be fired anyway at that point
2016-03-13 00:12:09 +01:00
Naios
b7f936891a Core/Game: Move singleton instances into compilation units
* Fixes issues when building shared libraries
  (prevents gcc and clang from providing several instance)

(cherry picked from commit 329225b40d)
2016-03-11 20:03:12 +01:00
Shauren
7f817a4fc0 Core/Scripts: Fixed calling UnitScript hooks
Closes #16543

(cherry picked from commit f809e5e13e)
2016-02-11 16:36:08 +01:00
treeston
6102a7937d Maps/Instances: Implement handling of CMSG_SET_SAVED_INSTANCE_EXTEND 2016-02-10 19:35:11 +01:00
Rushor
923a368ac7 Update copyright note for 2016 2016-01-01 12:02:33 +01:00
Naios
23153c8bf1 Core/ScriptMgr: Replace IsDatabaseBound() methods through traits.
(cherry picked from commit 12d1993994)
2015-11-07 12:34:15 +01:00
Shauren
cba122ad94 Core/Conditions: Optimizations part 3 removed copying condition containers all over the place
(cherry picked from commit b09e63e9de)
2015-10-31 20:26:40 +01:00
Shauren
c92faf6277 Core/Commands: Refactored chat command script hook, fixes a crash when building with gcc 5
Closes #15616
Closes #15740

(cherry picked from commit 2d942ddcc5)

# Conflicts:
#	src/server/scripts/Commands/cs_battlenet_account.cpp
#	src/server/scripts/Commands/cs_cast.cpp
#	src/server/scripts/Commands/cs_debug.cpp
#	src/server/scripts/Commands/cs_go.cpp
#	src/server/scripts/Commands/cs_misc.cpp
#	src/server/scripts/Commands/cs_mmaps.cpp
#	src/server/scripts/Commands/cs_modify.cpp
#	src/server/scripts/Commands/cs_npc.cpp
#	src/server/scripts/Commands/cs_reload.cpp
#	src/server/scripts/Commands/cs_ticket.cpp
2015-10-22 22:34:16 +02:00
pete318
b1032ed620 Change many uint32 to ObjectGuid::LowType in line with 6.x changes. 2015-10-12 23:10:41 +02:00
Shauren
bba8555a29 Build fix 2015-03-18 11:47:30 +01:00
Vincent-Michael
f3e86d3e68 Update copyright note for 2015
Happy new year

Conflicts:
	src/server/bnetserver/Authentication/AuthCodes.h
	src/server/bnetserver/Authentication/BattlenetPacketCrypt.cpp
	src/server/bnetserver/Authentication/BattlenetPacketCrypt.h
	src/server/bnetserver/Packets/AchievementPackets.h
	src/server/bnetserver/Packets/AuthenticationPackets.cpp
	src/server/bnetserver/Packets/AuthenticationPackets.h
	src/server/bnetserver/Packets/BitStream.cpp
	src/server/bnetserver/Packets/BitStream.h
	src/server/bnetserver/Packets/CachePackets.cpp
	src/server/bnetserver/Packets/CachePackets.h
	src/server/bnetserver/Packets/ChatPackets.h
	src/server/bnetserver/Packets/ConnectionPackets.cpp
	src/server/bnetserver/Packets/ConnectionPackets.h
	src/server/bnetserver/Packets/FriendsPackets.cpp
	src/server/bnetserver/Packets/FriendsPackets.h
	src/server/bnetserver/Packets/PacketManager.cpp
	src/server/bnetserver/Packets/PacketManager.h
	src/server/bnetserver/Packets/Packets.h
	src/server/bnetserver/Packets/PacketsBase.cpp
	src/server/bnetserver/Packets/PacketsBase.h
	src/server/bnetserver/Packets/PresencePackets.cpp
	src/server/bnetserver/Packets/PresencePackets.h
	src/server/bnetserver/Packets/ProfilePackets.h
	src/server/bnetserver/Packets/SupportPackets.h
	src/server/bnetserver/Packets/WoWRealmPackets.cpp
	src/server/bnetserver/Packets/WoWRealmPackets.h
	src/server/bnetserver/Realms/RealmList.cpp
	src/server/bnetserver/Realms/WorldListener.cpp
	src/server/bnetserver/Realms/WorldListener.h
	src/server/bnetserver/Server/ComponentManager.cpp
	src/server/bnetserver/Server/ComponentManager.h
	src/server/bnetserver/Server/ModuleManager.cpp
	src/server/bnetserver/Server/ModuleManager.h
	src/server/bnetserver/Server/Session.cpp
	src/server/bnetserver/Server/Session.h
	src/server/bnetserver/Server/SessionManager.cpp
	src/server/bnetserver/Server/SessionManager.h
	src/server/game/Accounts/BattlenetAccountMgr.cpp
	src/server/game/Accounts/BattlenetAccountMgr.h
	src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp
	src/server/game/Battlegrounds/Zones/BattlegroundBFG.h
	src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp
	src/server/game/Battlegrounds/Zones/BattlegroundTP.h
	src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
	src/server/game/Entities/AreaTrigger/AreaTrigger.h
	src/server/game/Entities/Item/ItemTemplate.cpp
	src/server/game/Guilds/GuildFinderMgr.cpp
	src/server/game/Guilds/GuildFinderMgr.h
	src/server/game/Handlers/GuildFinderHandler.cpp
	src/server/game/Handlers/VoidStorageHandler.cpp
	src/server/game/Movement/MovementStructures.cpp
	src/server/game/Movement/MovementStructures.h
	src/server/game/Movement/PathGenerator.cpp
	src/server/game/Server/BattlenetServerManager.cpp
	src/server/game/Server/BattlenetServerManager.h
	src/server/game/Server/Packet.cpp
	src/server/game/Server/Packet.h
	src/server/game/Server/Packets/AchievementPackets.cpp
	src/server/game/Server/Packets/AchievementPackets.h
	src/server/game/Server/Packets/AuctionHousePackets.cpp
	src/server/game/Server/Packets/AuctionHousePackets.h
	src/server/game/Server/Packets/AuthenticationPackets.cpp
	src/server/game/Server/Packets/AuthenticationPackets.h
	src/server/game/Server/Packets/BattlegroundPackets.cpp
	src/server/game/Server/Packets/BattlegroundPackets.h
	src/server/game/Server/Packets/ChannelPackets.cpp
	src/server/game/Server/Packets/ChannelPackets.h
	src/server/game/Server/Packets/CharacterPackets.cpp
	src/server/game/Server/Packets/CharacterPackets.h
	src/server/game/Server/Packets/ChatPackets.cpp
	src/server/game/Server/Packets/ChatPackets.h
	src/server/game/Server/Packets/ClientConfigPackets.cpp
	src/server/game/Server/Packets/ClientConfigPackets.h
	src/server/game/Server/Packets/CombatLogPackets.cpp
	src/server/game/Server/Packets/CombatLogPackets.h
	src/server/game/Server/Packets/CombatPackets.cpp
	src/server/game/Server/Packets/CombatPackets.h
	src/server/game/Server/Packets/EquipmentSetPackets.cpp
	src/server/game/Server/Packets/EquipmentSetPackets.h
	src/server/game/Server/Packets/GameObjectPackets.cpp
	src/server/game/Server/Packets/GameObjectPackets.h
	src/server/game/Server/Packets/GuildPackets.cpp
	src/server/game/Server/Packets/GuildPackets.h
	src/server/game/Server/Packets/ItemPackets.cpp
	src/server/game/Server/Packets/ItemPackets.h
	src/server/game/Server/Packets/LootPackets.h
	src/server/game/Server/Packets/MiscPackets.cpp
	src/server/game/Server/Packets/MiscPackets.h
	src/server/game/Server/Packets/MovementPackets.cpp
	src/server/game/Server/Packets/MovementPackets.h
	src/server/game/Server/Packets/NPCPackets.cpp
	src/server/game/Server/Packets/NPCPackets.h
	src/server/game/Server/Packets/QueryPackets.cpp
	src/server/game/Server/Packets/QueryPackets.h
	src/server/game/Server/Packets/QuestPackets.cpp
	src/server/game/Server/Packets/QuestPackets.h
	src/server/game/Server/Packets/ReputationPackets.cpp
	src/server/game/Server/Packets/ReputationPackets.h
	src/server/game/Server/Packets/SpellPackets.cpp
	src/server/game/Server/Packets/SpellPackets.h
	src/server/game/Server/Packets/SystemPackets.cpp
	src/server/game/Server/Packets/SystemPackets.h
	src/server/game/Server/Packets/TalentPackets.cpp
	src/server/game/Server/Packets/TalentPackets.h
	src/server/game/Server/Packets/TradePackets.h
	src/server/game/Server/Packets/WorldStatePackets.cpp
	src/server/game/Server/Packets/WorldStatePackets.h
	src/server/game/Server/WorldSocket.cpp
	src/server/ipc/CMakeLists.txt
	src/server/ipc/Commands.cpp
	src/server/ipc/Commands.h
	src/server/ipc/ZMQTask.cpp
	src/server/ipc/ZMQTask.h
	src/server/ipc/ZmqContext.cpp
	src/server/ipc/ZmqContext.h
	src/server/ipc/ZmqListener.cpp
	src/server/ipc/ZmqListener.h
	src/server/ipc/ZmqMux.cpp
	src/server/ipc/ZmqMux.h
	src/server/ipc/ZmqWorker.cpp
	src/server/ipc/ZmqWorker.h
	src/server/scripts/Commands/cs_battlenet_account.cpp
	src/server/scripts/Commands/cs_mmaps.cpp
	src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp
	src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp
	src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp
	src/server/scripts/EasternKingdoms/BaradinHold/instance_baradin_hold.cpp
	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp
	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h
	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp
	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp
	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp
	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp
	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp
	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp
	src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_daakara.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
	src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp
	src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
	src/server/scripts/EasternKingdoms/ZulAman/zulaman.h
	src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo_the_godbreaker.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_kilnara.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
	src/server/scripts/EasternKingdoms/zone_burning_steppes.cpp
	src/server/scripts/EasternKingdoms/zone_ironforge.cpp
	src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp
	src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp
	src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp
	src/server/scripts/Kalimdor/Firelands/firelands.h
	src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp
	src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp
	src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp
	src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp
	src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h
	src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp
	src/server/scripts/Kalimdor/zone_azshara.cpp
	src/server/scripts/Kalimdor/zone_darkshore.cpp
	src/server/scripts/Kalimdor/zone_felwood.cpp
	src/server/scripts/Kalimdor/zone_moonglade.cpp
	src/server/scripts/Kalimdor/zone_orgrimmar.cpp
	src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp
	src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp
	src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp
	src/server/scripts/Maelstrom/Stonecore/boss_ozruk.cpp
	src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp
	src/server/scripts/Maelstrom/Stonecore/instance_stonecore.cpp
	src/server/scripts/Maelstrom/Stonecore/stonecore.cpp
	src/server/scripts/Maelstrom/Stonecore/stonecore.h
	src/server/shared/Cryptography/Authentication/AuthCrypt.h
	src/server/shared/Cryptography/Authentication/PacketCrypt.cpp
	src/server/shared/Cryptography/Authentication/WorldPacketCrypt.cpp
	src/server/shared/Cryptography/HmacHash.cpp
	src/server/shared/Cryptography/SHA256.cpp
	src/server/shared/Cryptography/SHA256.h
	src/server/shared/Database/Implementation/HotfixDatabase.cpp
	src/server/shared/Database/Implementation/HotfixDatabase.h
	src/server/shared/Realm/Realm.cpp
	src/server/shared/Realm/Realm.h
	src/tools/connection_patcher/CMakeLists.txt
	src/tools/connection_patcher/Constants/BinaryTypes.hpp
	src/tools/connection_patcher/Helper.cpp
	src/tools/connection_patcher/Helper.hpp
	src/tools/connection_patcher/Patcher.cpp
	src/tools/connection_patcher/Patcher.hpp
	src/tools/connection_patcher/Patches/Common.hpp
	src/tools/connection_patcher/Patches/Mac.hpp
	src/tools/connection_patcher/Patches/Windows.hpp
	src/tools/connection_patcher/Patterns/Common.hpp
	src/tools/connection_patcher/Patterns/Mac.hpp
	src/tools/connection_patcher/Patterns/Windows.hpp
	src/tools/connection_patcher/Program.cpp
	src/tools/map_extractor/loadlib/DBFilesClientList.h
2015-01-01 00:32:50 +01:00
joschiwald
5b93a6b392 Core/Scripts: log ScriptNames assigned in database without core script
(cherry picked from commit cc4ebdbe05)
2014-12-06 15:38:21 +01:00
jackpoz
a209fc30ff Core/Misc: Avoid Helgrind reporting libstdc++ false positive race conditions 2014-09-20 22:35:13 +02:00
Shauren
a0e50ea35f Core/Entities: Use ObjectGuid class in game project 2014-09-14 16:14:12 +02:00
chadryx
983755a21d Added a new hook Called when a player's money is at limit 2014-08-27 19:01:41 +03:00
Rochet2
9beae1dc97 Removed OnQuestComplete hook, use QuestReward instead. Implemented OnQuestStatusChange hook
Also fixed some comments and added overrides
The OnQuestComplete hook was unused and didnt work properly
2014-08-24 14:31:38 +03:00
leak
1a27ce1267 Core/NetworkIO: Restore networking related scripting hooks
Closes #12607
2014-08-11 17:40:43 +02:00
DDuarte
a394205eca Core/Server: Add missing overrides 2014-08-09 20:17:40 +01:00
Shauren
6f272ea5b7 Core/Network: Optimized packet sending by removing unneccessary memory copying 2014-07-27 17:46:46 +02:00
leak
dce92611f3 Refactored singletons to enable proper deconstruction during shutdown 2014-07-20 00:40:08 +02:00
leak
a738cd96dc Renamed WorldTcpSession back to WorldSocket 2014-07-07 22:03:41 +02:00
Subv
b5d5768d44 Fixed the crashes 2014-07-05 21:38:29 -05:00
leak
7befb26625 Some groundwork for replacing the ACE based WorldSocket handling 2014-07-06 01:26:29 +02:00
leak
e0aed65c8c ACE cleanup on game, now the major issue remains WorldSocket 2014-07-02 02:20:53 +02:00
leak
029bad6698 Replaced all remaining ACE based Singletons
Replaced ACE base AutoPtr class with shared_ptr
Note: worldserver currently broken due to MapUpdater threading failure (ACE ofc, what else could it be)
2014-07-01 00:54:09 +02:00
Shauren
05ea2f76b8 Core/Misc: Fixed warnings 2014-06-24 02:01:40 +02:00
Aokromes
84e6af26e6 Merge pull request #11976 from Ascathor/master
Core/Misc: New ability to log account IP access history
2014-06-23 22:48:35 +02:00
Rochet2
7240fafe94 Core: Add loginFirst param to OnLogin hook to allow doing things on first login only
whitespacefix

Fix warning about unused param
2014-06-21 17:40:56 +03:00
Ascathor
6949735098 Core/Misc:
* Fix some codestyle, fix some typos

* Change CMakeLists for: Custom (can be uncommented), Events, World
** Custom is theoretically unchanged. You can, however, uncomment the glob_recurse that initializes every file within. This might be easier for beginners.

* Introducing the IP Based Action Log System:
** On several different actions, e.g. Login, Character Login, etc., a new entry is added
** Can be logged on and off in worldserver config
*** Disabled by default to prevent increased log db size for unknowing users.

* Add a new row to account table called 'last_attempt_ip'
** Lists the last ip trying to connect to the account

* Add a new type of HookScripts: AccountScript
** Includes: OnAccountLogin, OnFailedAccountLogin, OnEmailChange, OnFailedChange, OnPasswordChange, OnFailedPasswordChange

* Added new Hook to PlayerScripts: OnFailedPlayerDelete

* Added new variables to PlayerScripts: OnPlayerDelete
2014-06-13 16:25:11 +02:00