From ac8bf86755cd928f6bfec725f815fd2c06473f2f Mon Sep 17 00:00:00 2001 From: Giacomo Pozzoni Date: Tue, 28 Jan 2020 07:41:43 +0100 Subject: [PATCH] Core/Scripts: Change PlayerScript and CreatureScript inheritance Remove UnitScript from PlayerScript and CreatureScript classes as that's how the original system that was PR'd worked, see https://github.com/TrinityCore/TrinityCore/pull/7867 for reference. Please note these are used as global hooks and should really just invoke stateless functions. If you need to hook methods from PlayerScript/CreatureScript and UnitScript, just define 2 different scripts (this is how the original system worked and how it was designed to work) --- src/server/game/Scripting/ScriptMgr.cpp | 15 ++++----------- src/server/game/Scripting/ScriptMgr.h | 7 +++---- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 04fb653795c..30fc969e9be 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -2086,37 +2086,31 @@ void ScriptMgr::OnGroupDisband(Group* group) void ScriptMgr::OnHeal(Unit* healer, Unit* reciever, uint32& gain) { FOREACH_SCRIPT(UnitScript)->OnHeal(healer, reciever, gain); - FOREACH_SCRIPT(PlayerScript)->OnHeal(healer, reciever, gain); } void ScriptMgr::OnDamage(Unit* attacker, Unit* victim, uint32& damage) { FOREACH_SCRIPT(UnitScript)->OnDamage(attacker, victim, damage); - FOREACH_SCRIPT(PlayerScript)->OnDamage(attacker, victim, damage); } void ScriptMgr::ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage) { FOREACH_SCRIPT(UnitScript)->ModifyPeriodicDamageAurasTick(target, attacker, damage); - FOREACH_SCRIPT(PlayerScript)->ModifyPeriodicDamageAurasTick(target, attacker, damage); } void ScriptMgr::ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage) { FOREACH_SCRIPT(UnitScript)->ModifyMeleeDamage(target, attacker, damage); - FOREACH_SCRIPT(PlayerScript)->ModifyMeleeDamage(target, attacker, damage); } void ScriptMgr::ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage) { FOREACH_SCRIPT(UnitScript)->ModifySpellDamageTaken(target, attacker, damage); - FOREACH_SCRIPT(PlayerScript)->ModifySpellDamageTaken(target, attacker, damage); } void ScriptMgr::ModifyVehiclePassengerExitPos(Unit* passenger, Vehicle* vehicle, Position& pos) { FOREACH_SCRIPT(UnitScript)->ModifyVehiclePassengerExitPos(passenger, vehicle, pos); - FOREACH_SCRIPT(CreatureScript)->ModifyVehiclePassengerExitPos(passenger, vehicle, pos); } SpellScriptLoader::SpellScriptLoader(char const* name) @@ -2143,11 +2137,10 @@ FormulaScript::FormulaScript(char const* name) ScriptRegistry::Instance()->AddScript(this); } -UnitScript::UnitScript(char const* name, bool addToScripts) +UnitScript::UnitScript(char const* name) : ScriptObject(name) { - if (addToScripts) - ScriptRegistry::Instance()->AddScript(this); + ScriptRegistry::Instance()->AddScript(this); } WorldMapScript::WorldMapScript(char const* name, uint32 mapId) @@ -2193,7 +2186,7 @@ ItemScript::ItemScript(char const* name) } CreatureScript::CreatureScript(char const* name) - : UnitScript(name, false) + : ScriptObject(name) { ScriptRegistry::Instance()->AddScript(this); } @@ -2287,7 +2280,7 @@ AchievementCriteriaScript::AchievementCriteriaScript(char const* name) } PlayerScript::PlayerScript(char const* name) - : UnitScript(name, false) + : ScriptObject(name) { ScriptRegistry::Instance()->AddScript(this); } diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 2f8e9bd45ea..91b36289eb6 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -390,7 +390,7 @@ class TC_GAME_API UnitScript : public ScriptObject { protected: - UnitScript(char const* name, bool addToScripts = true); + UnitScript(char const* name); public: // Called when a unit deals healing to another unit @@ -412,14 +412,13 @@ class TC_GAME_API UnitScript : public ScriptObject virtual void ModifyVehiclePassengerExitPos(Unit* /*passenger*/, Vehicle* /*vehicle*/, Position& /*pos*/) { } }; -class TC_GAME_API CreatureScript : public UnitScript +class TC_GAME_API CreatureScript : public ScriptObject { protected: CreatureScript(char const* name); public: - // Called when a CreatureAI object is needed for the creature. virtual CreatureAI* GetAI(Creature* /*creature*/) const = 0; }; @@ -609,7 +608,7 @@ class TC_GAME_API AchievementCriteriaScript : public ScriptObject virtual bool OnCheck(Player* source, Unit* target) = 0; }; -class TC_GAME_API PlayerScript : public UnitScript +class TC_GAME_API PlayerScript : public ScriptObject { protected: