91#define VISIBLE_RANGE 166.0f
175 std::string
const& GetName()
const;
211 virtual void OnNetworkStart();
214 virtual void OnNetworkStop();
217 virtual void OnSocketOpen(std::shared_ptr<WorldSocket> socket);
221 virtual void OnSocketClose(std::shared_ptr<WorldSocket> socket);
241 virtual void OnOpenStateChange(
bool open);
244 virtual void OnConfigLoad(
bool reload);
247 virtual void OnMotdChange(std::string& newMotd);
253 virtual void OnShutdownCancel();
256 virtual void OnUpdate(
uint32 diff);
259 virtual void OnStartup();
262 virtual void OnShutdown();
274 virtual void OnHonorCalculation(
float& honor,
uint8 level,
float multiplier);
277 virtual void OnGrayLevelCalculation(
uint8& grayLevel,
uint8 playerLevel);
283 virtual void OnZeroDifferenceCalculation(
uint8& diff,
uint8 playerLevel);
292 virtual void OnGroupRateCalculation(
float& rate,
uint32 count,
bool isRaid);
310 virtual void OnCreate(TMap* map);
313 virtual void OnDestroy(TMap* map);
322 virtual void OnPlayerEnter(TMap* map,
Player* player);
325 virtual void OnPlayerLeave(TMap* map,
Player* player);
327 virtual void OnUpdate(TMap* map,
uint32 diff);
365 virtual bool OnQuestAccept(
Player* player,
Item* item,
Quest const* quest);
374 virtual bool OnRemove(
Player* player,
Item* item);
391 virtual void OnDamage(
Unit* attacker,
Unit* victim,
uint32& damage);
394 virtual void ModifyPeriodicDamageAurasTick(
Unit* target,
Unit* attacker,
uint32& damage);
397 virtual void ModifyMeleeDamage(
Unit* target,
Unit* attacker,
uint32& damage);
400 virtual void ModifySpellDamageTaken(
Unit* target,
Unit* attacker,
int32& damage);
496 virtual std::vector<Trinity::ChatCommands::ChatCommandBuilder>
GetCommands()
const = 0;
555 virtual void OnInstall(
Vehicle* veh);
558 virtual void OnUninstall(
Vehicle* veh);
561 virtual void OnReset(
Vehicle* veh);
567 virtual void OnAddPassenger(
Vehicle* veh,
Unit* passenger,
int8 seatId);
570 virtual void OnRemovePassenger(
Vehicle* veh,
Unit* passenger);
602 virtual void OnRelocate(
Transport* transport,
uint32 waypointId,
uint32 mapId,
float x,
float y,
float z);
634 virtual void OnPlayerKilledByCreature(
Creature* killer,
Player* killed);
637 virtual void OnLevelChanged(
Player* player,
uint8 oldLevel);
640 virtual void OnFreeTalentPointsChanged(
Player* player,
uint32 points);
643 virtual void OnTalentsReset(
Player* player,
bool involuntarily);
646 virtual void OnMoneyChanged(
Player* player,
int32& amount);
649 virtual void OnMoneyLimit(
Player* player,
int32 amount);
655 virtual void OnReputationChange(
Player* player,
uint32 factionId,
int32& standing,
bool incremental);
658 virtual void OnDuelRequest(
Player* target,
Player* challenger);
661 virtual void OnDuelStart(
Player* player1,
Player* player2);
683 virtual void OnSpellCast(
Player* player,
Spell* spell,
bool skipCheck);
686 virtual void OnLogin(
Player* player,
bool firstLogin);
689 virtual void OnLogout(
Player* player);
692 virtual void OnCreate(
Player* player);
701 virtual void OnSave(
Player* player);
710 virtual void OnMapChanged(
Player* player);
716 virtual void OnQuestStatusChange(
Player* player,
uint32 questId);
719 virtual void OnPlayerRepop(
Player* player);
722 virtual void OnMovieComplete(
Player* player,
uint32 movieId);
735 virtual void OnAccountLogin(
uint32 accountId);
738 virtual void OnFailedAccountLogin(
uint32 accountId);
741 virtual void OnEmailChange(
uint32 accountId);
744 virtual void OnFailedEmailChange(
uint32 accountId);
747 virtual void OnPasswordChange(
uint32 accountId);
750 virtual void OnFailedPasswordChange(
uint32 accountId);
765 virtual void OnRemoveMember(
Guild* guild,
Player* player,
bool isDisbanding,
bool isKicked);
768 virtual void OnMOTDChanged(
Guild* guild, std::string
const& newMotd);
771 virtual void OnInfoChanged(
Guild* guild, std::string
const& newInfo);
774 virtual void OnCreate(
Guild* guild,
Player* leader, std::string
const& name);
777 virtual void OnDisband(
Guild* guild);
780 virtual void OnMemberWitdrawMoney(
Guild* guild,
Player* player,
uint32& amount,
bool isRepair);
787 bool isDestBank,
uint8 destContainer,
uint8 destSlotId);
815 virtual void OnDisband(
Group* group);
827 void FillSpellSummary();
840 typedef void(*ScriptLoaderCallbackType)();
846 _script_loader_callback = script_loader_callback;
853 void SetScriptContext(std::string
const& context);
858 void ReleaseScriptContext(std::string
const& context);
862 void SwapScriptContext(
bool initialize =
false);
865 static std::string
const& GetNameOfStaticContext();
870 std::shared_ptr<ModuleReference> AcquireModuleReferenceOfScriptName(
871 std::string
const& scriptname)
const;
879 void CreateSpellScripts(
uint32 spellId, std::vector<SpellScript*>& scriptVector,
Spell* invoker)
const;
880 void CreateAuraScripts(
uint32 spellId, std::vector<AuraScript*>& scriptVector,
Aura* invoker)
const;
885 void OnNetworkStart();
886 void OnNetworkStop();
887 void OnSocketOpen(std::shared_ptr<WorldSocket>
const& socket);
888 void OnSocketClose(std::shared_ptr<WorldSocket>
const& socket);
894 void OnOpenStateChange(
bool open);
895 void OnConfigLoad(
bool reload);
896 void OnMotdChange(std::string& newMotd);
898 void OnShutdownCancel();
899 void OnWorldUpdate(
uint32 diff);
905 void OnHonorCalculation(
float& honor,
uint8 level,
float multiplier);
906 void OnGrayLevelCalculation(
uint8& grayLevel,
uint8 playerLevel);
908 void OnZeroDifferenceCalculation(
uint8& diff,
uint8 playerLevel);
911 void OnGroupRateCalculation(
float& rate,
uint32 count,
bool isRaid);
915 void OnCreateMap(
Map* map);
916 void OnDestroyMap(
Map* map);
919 void OnPlayerEnterMap(
Map* map,
Player* player);
920 void OnPlayerLeaveMap(
Map* map,
Player* player);
932 bool OnItemRemove(
Player* player,
Item* item);
961 std::vector<Trinity::ChatCommands::ChatCommandBuilder> GetChatCommands();
982 void OnUninstall(
Vehicle* veh);
986 void OnRemovePassenger(
Vehicle* veh,
Unit* passenger);
1009 void OnPlayerLevelChanged(
Player* player,
uint8 oldLevel);
1010 void OnPlayerFreeTalentPointsChanged(
Player* player,
uint32 newPoints);
1011 void OnPlayerTalentsReset(
Player* player,
bool involuntarily);
1012 void OnPlayerMoneyChanged(
Player* player,
int32& amount);
1013 void OnPlayerMoneyLimit(
Player* player,
int32 amount);
1015 void OnPlayerReputationChange(
Player* player,
uint32 factionID,
int32& standing,
bool incremental);
1016 void OnPlayerDuelRequest(
Player* target,
Player* challenger);
1017 void OnPlayerDuelStart(
Player* player1,
Player* player2);
1026 void OnPlayerSpellCast(
Player* player,
Spell* spell,
bool skipCheck);
1027 void OnPlayerLogin(
Player* player,
bool firstLogin);
1028 void OnPlayerLogout(
Player* player);
1029 void OnPlayerCreate(
Player* player);
1032 void OnPlayerSave(
Player* player);
1036 void OnQuestStatusChange(
Player* player,
uint32 questId);
1038 void OnPlayerRepop(
Player* player);
1042 void OnAccountLogin(
uint32 accountId);
1043 void OnFailedAccountLogin(
uint32 accountId);
1044 void OnEmailChange(
uint32 accountId);
1045 void OnFailedEmailChange(
uint32 accountId);
1046 void OnPasswordChange(
uint32 accountId);
1047 void OnFailedPasswordChange(
uint32 accountId);
1052 void OnGuildRemoveMember(
Guild* guild,
Player* player,
bool isDisbanding,
bool isKicked);
1053 void OnGuildMOTDChanged(
Guild* guild,
const std::string& newMotd);
1054 void OnGuildInfoChanged(
Guild* guild,
const std::string& newInfo);
1055 void OnGuildCreate(
Guild* guild,
Player* leader,
const std::string& name);
1056 void OnGuildDisband(
Guild* guild);
1057 void OnGuildMemberWitdrawMoney(
Guild* guild,
Player* player,
uint32 &amount,
bool isRepair);
1060 bool isDestBank,
uint8 destContainer,
uint8 destSlotId);
1070 void OnGroupDisband(
Group* group);
1076 void ModifyPeriodicDamageAurasTick(
Unit* target,
Unit* attacker,
uint32& damage);
1077 void ModifyMeleeDamage(
Unit* target,
Unit* attacker,
uint32& damage);
1078 void ModifySpellDamageTaken(
Unit* target,
Unit* attacker,
int32& damage);
1090 template<
typename T>
1093 template<
typename T>
1097template <
typename... Ts>
1110 if constexpr (!std::is_same_v<SpellScriptType, Trinity::find_type_end>)
1111 return Trinity::new_from_tuple<SpellScriptType>(
_args);
1118 if constexpr (!std::is_same_v<AuraScriptType, Trinity::find_type_end>)
1119 return Trinity::new_from_tuple<AuraScriptType>(
_args);
1127#define RegisterSpellScriptWithArgs(spell_script, script_name, ...) new GenericSpellAndAuraScriptLoader<spell_script, decltype(std::make_tuple(__VA_ARGS__))>(script_name, std::make_tuple(__VA_ARGS__))
1128#define RegisterSpellScript(spell_script) RegisterSpellScriptWithArgs(spell_script, #spell_script)
1129#define RegisterSpellAndAuraScriptPairWithArgs(script_1, script_2, script_name, ...) new GenericSpellAndAuraScriptLoader<script_1, script_2, decltype(std::make_tuple(__VA_ARGS__))>(script_name, std::make_tuple(__VA_ARGS__))
1130#define RegisterSpellAndAuraScriptPair(script_1, script_2) RegisterSpellAndAuraScriptPairWithArgs(script_1, script_2, #script_1)
1139#define RegisterCreatureAI(ai_name) new GenericCreatureScript<ai_name>(#ai_name)
1141template <
class AI, AI* (*AIFactory)(Creature*)>
1148#define RegisterCreatureAIWithFactory(ai_name, factory_fn) new FactoryCreatureScript<ai_name, &factory_fn>(#ai_name)
1157#define RegisterGameObjectAI(ai_name) new GenericGameObjectScript<ai_name>(#ai_name)
1159template <
class AI, AI* (*AIFactory)(GameObject*)>
1166#define RegisterGameObjectAIWithFactory(ai_name, factory_fn) new FactoryGameObjectScript<ai_name, &factory_fn>(#ai_name)
1168#define sScriptMgr ScriptMgr::instance()
virtual bool OnCheck(Player *source, Unit *target)=0
AreaTriggerScript(char const *name)
virtual Battlefield * GetBattlefield() const =0
virtual Battleground * GetBattleground() const =0
virtual std::vector< Trinity::ChatCommands::ChatCommandBuilder > GetCommands() const =0
virtual CreatureAI * GetAI(Creature *creature) const =0
CreatureAI * GetAI(Creature *me) const override
FactoryCreatureScript(char const *name)
GameObjectAI * GetAI(GameObject *me) const override
FactoryGameObjectScript(char const *name)
virtual GameObjectAI * GetAI(GameObject *go) const =0
GenericCreatureScript(char const *name)
CreatureAI * GetAI(Creature *me) const override
GenericGameObjectScript(char const *name)
GameObjectAI * GetAI(GameObject *go) const override
typename Trinity::find_type_if_t< Trinity::SpellScripts::is_AuraScript, Ts... > AuraScriptType
AuraScript * GetAuraScript() const override
typename Trinity::find_type_if_t< Trinity::SpellScripts::is_SpellScript, Ts... > SpellScriptType
SpellScript * GetSpellScript() const override
typename Trinity::find_type_if_t< Trinity::is_tuple, Ts... > ArgsType
GenericSpellAndAuraScriptLoader(char const *name, ArgsType &&args)
MapEntry const * _mapEntry
virtual void OnUnloadGridMap(TMap *, GridMap *, uint32, uint32)
virtual void OnLoadGridMap(TMap *, GridMap *, uint32, uint32)
virtual bool TryHandleOnce(Player *player, AreaTriggerEntry const *trigger)=0
virtual OutdoorPvP * GetOutdoorPvP() const =0
virtual void OnQuestObjectiveProgress(Player *, Quest const *, uint32, uint16)
void IncreaseScriptCount()
void SetScriptLoader(ScriptLoaderCallbackType script_loader_callback)
void DecreaseScriptCount()
uint32 GetScriptCount() const
std::string const & GetCurrentScriptContext() const
Returns the current script context.
std::string _currentContext
ScriptLoaderCallbackType _script_loader_callback
Player session in the World.
std::is_base_of< AuraScript, T > is_AuraScript
std::is_base_of< SpellScript, T > is_SpellScript
typename find_type_if< Check, Ts... >::type find_type_if_t