diff options
author | silinoron <none@none> | 2010-08-11 19:52:58 -0700 |
---|---|---|
committer | silinoron <none@none> | 2010-08-11 19:52:58 -0700 |
commit | 0963cb3aeadf01734ce06c88a0bbf535e78342e8 (patch) | |
tree | 1d068418dbc62d06832c519d663557ee648321c7 /src/server/game/Scripting/ScriptMgr.h | |
parent | bd1f9ceaf9a4a5865e6f026dff9f51daf2f382b4 (diff) |
Implement a PlayerScript class with a handful of new hooks:
* OnPVPKill
* OnCreatureKill
* OnPlayerKilledByCreature
* OnPlayerLevelChanged
* OnPlayerFreeTalentPointsChanged
* OnPlayerTalentsReset
* More hooks may be added in the future
--HG--
branch : trunk
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.h')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index cf583a68532..9239f2c3ac3 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -652,6 +652,33 @@ class AchievementCriteriaScript : public ScriptObject virtual bool OnCheck(Player* source, Unit* target) = 0; }; +class PlayerScript : public ScriptObject +{ +protected: + PlayerScript(const char* name); + +public: + bool IsDatabaseBound() const { return false; } + + // Called when a player kills another player + virtual void OnPVPKill(Player *killer, Player *killed); + + // Called when a player kills a creature + virtual void OnCreatureKill(Player *killer, Creature *killed); + + // Called when a player is killed by a creature + virtual void OnPlayerKilledByCreature(Creature *killer, Player *killed); + + // Called when a player's level changes (right before the level is applied) + virtual void OnLevelChanged(Player *player, uint8 newLevel); + + // Called when a player's free talent points change (right before the change is applied) + virtual void OnFreeTalentPointsChanged(Player *player, uint32 points); + + // Called when a player's talent points are reset (right before the reset is done) + virtual void OnTalentsReset(Player *player, bool no_cost); +}; + // Placed here due to ScriptRegistry::AddScript dependency. #define sScriptMgr (*ACE_Singleton<ScriptMgr, ACE_Null_Mutex>::instance()) @@ -824,6 +851,14 @@ class ScriptMgr bool OnCriteriaCheck(AchievementCriteriaData const* data, Player* source, Unit* target); + public: /* PlayerScript */ + void OnPVPKill(Player *killer, Player *killed); + void OnCreatureKill(Player *killer, Creature *killed); + void OnPlayerKilledByCreature(Creature *killer, Player *killed); + void OnPlayerLevelChanged(Player *player, uint8 newLevel); + void OnPlayerFreeTalentPointsChanged(Player *player, uint32 newPoints); + void OnPlayerTalentsReset(Player *player, bool no_cost); + public: /* ScriptRegistry */ // This is the global static registry of scripts. |