56#define VISIBLE_RANGE 166.0f
282 SF_LOG_ERROR(
"scripts",
"Invalid MapScript for %u; no such map ID.", mapId);
356 UnitScript(
const char* name,
bool addToScripts =
true);
764#define sScriptMgr Skyfire::Singleton<ScriptMgr, Skyfire::NullMutex>::instance()
953 bool isDestBank,
uint8 destContainer,
uint8 destSlotId);
991#define RegisterSpellScript(spell_script) new GenericSpellScriptLoader<spell_script>(#spell_script)
1000#define RegisterAuraScript(aura_script) new GenericAuraScriptLoader<aura_script>(#aura_script)
1002template <
class S,
class A>
1010#define RegisterSpellAndAuraScriptPair(spell_script, aura_script) new GenericSpellAndAuraScriptLoader<spell_script, aura_script>(#spell_script)
1019#define RegisterCreatureAI(ai_name) new GenericCreatureScript<ai_name>(#ai_name)
1021template <
class AI, AI* (*AIFactory)(Creature*)>
1028#define RegisterCreatureAIWithFactory(ai_name, factory_fn) new FactoryCreatureScript<ai_name, &factory_fn>(#ai_name)
1037#define RegisterGameObjectAI(ai_name) new GenericGameObjectScript<ai_name>(#ai_name)
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
#define SF_LOG_ERROR(filterType__,...)
virtual bool OnCheck(Player *source, Unit *target)=0
AchievementCriteriaScript(const char *name)
bool IsDatabaseBound() const FINAL
bool IsDatabaseBound() const FINAL
AreaTriggerScript(const char *name)
virtual bool OnTrigger(Player *, AreaTriggerEntry const *)
virtual void OnAuctionExpire(AuctionHouseObject *, AuctionEntry *)
virtual void OnAuctionAdd(AuctionHouseObject *, AuctionEntry *)
virtual void OnAuctionSuccessful(AuctionHouseObject *, AuctionEntry *)
virtual void OnAuctionRemove(AuctionHouseObject *, AuctionEntry *)
AuctionHouseScript(const char *name)
BattlegroundMapScript(const char *name, uint32 mapId)
BattlegroundScript(const char *name)
bool IsDatabaseBound() const FINAL
virtual Battleground * GetBattleground() const =0
virtual std::vector< ChatCommand > GetCommands() const =0
CommandScript(const char *name)
virtual bool OnConditionCheck(Condition *, ConditionSourceInfo &)
bool IsDatabaseBound() const FINAL
ConditionScript(const char *name)
virtual bool OnQuestSelect(Player *, Creature *, Quest const *)
virtual CreatureAI * GetAI(Creature *) const
virtual bool OnGossipSelect(Player *, Creature *, uint32, uint32)
virtual uint32 GetDialogStatus(Player *, Creature *)
virtual bool OnQuestComplete(Player *, Creature *, Quest const *)
virtual bool OnGossipHello(Player *, Creature *)
virtual bool OnQuestAccept(Player *, Creature *, Quest const *)
bool IsDatabaseBound() const FINAL
virtual bool OnDummyEffect(Unit *, uint32, SpellEffIndex, Creature *)
virtual bool OnQuestReward(Player *, Creature *, Quest const *, uint32)
virtual bool OnGossipSelectCode(Player *, Creature *, uint32, uint32, const char *)
CreatureScript(const char *name)
DynamicObjectScript(const char *name)
CreatureAI * GetAI(Creature *me) const override
FactoryCreatureScript(char const *name)
virtual void OnDestroyed(GameObject *, Player *)
virtual GameObjectAI * GetAI(GameObject *) const
virtual bool OnDummyEffect(Unit *, uint32, SpellEffIndex, GameObject *)
virtual bool OnQuestReward(Player *, GameObject *, Quest const *, uint32)
virtual void OnDamaged(GameObject *, Player *)
virtual void OnGameObjectStateChanged(GameObject *, uint32)
virtual bool OnGossipHello(Player *, GameObject *)
virtual bool OnGossipSelect(Player *, GameObject *, uint32, uint32)
GameObjectScript(const char *name)
virtual void OnLootStateChanged(GameObject *, uint32, Unit *)
bool IsDatabaseBound() const FINAL
virtual uint32 GetDialogStatus(Player *, GameObject *)
virtual bool OnGossipSelectCode(Player *, GameObject *, uint32, uint32, const char *)
virtual bool OnQuestAccept(Player *, GameObject *, Quest const *)
GenericAuraScriptLoader(char const *name)
AuraScript * GetAuraScript() const override
GenericCreatureScript(char const *name)
CreatureAI * GetAI(Creature *me) const override
GenericGameObjectScript(char const *name)
GameObjectAI * GetAI(GameObject *go) const override
SpellScript * GetSpellScript() const override
AuraScript * GetAuraScript() const override
GenericSpellAndAuraScriptLoader(char const *name)
SpellScript * GetSpellScript() const override
GenericSpellScriptLoader(char const *name)
bool IsDatabaseBound() const FINAL
virtual void OnAddMember(Group *, uint64)
virtual void OnDisband(Group *)
virtual void OnRemoveMember(Group *, uint64, RemoveMethod, uint64, const char *)
virtual void OnChangeLeader(Group *, uint64, uint64)
GroupScript(const char *name)
virtual void OnInviteMember(Group *, uint64)
virtual void OnRemoveMember(Guild *, Player *, bool, bool)
GuildScript(const char *name)
bool IsDatabaseBound() const FINAL
virtual void OnItemMove(Guild *, Player *, Item *, bool, uint8, uint8, bool, uint8, uint8)
virtual void OnInfoChanged(Guild *, const std::string &)
virtual void OnDisband(Guild *)
virtual void OnEvent(Guild *, uint8, uint32, uint32, uint8)
virtual void OnMemberDepositMoney(Guild *, Player *, uint64 &)
virtual void OnBankEvent(Guild *, uint8, uint8, uint32, uint32, uint16, uint8)
virtual void OnMemberWitdrawMoney(Guild *, Player *, uint64 &, bool)
virtual void OnAddMember(Guild *, Player *, uint8 &)
virtual void OnMOTDChanged(Guild *, const std::string &)
virtual void OnCreate(Guild *, Player *, const std::string &)
InstanceMapScript(const char *name, uint32 mapId)
bool IsDatabaseBound() const FINAL
virtual InstanceScript * GetInstanceScript(InstanceMap *) const
ItemScript(const char *name)
virtual bool OnUse(Player *, Item *, SpellCastTargets const &)
bool IsDatabaseBound() const FINAL
virtual bool OnExpire(Player *, ItemTemplate const *)
virtual bool OnDummyEffect(Unit *, uint32, SpellEffIndex, Item *)
virtual bool OnQuestAccept(Player *, Item *, Quest const *)
MapEntry const * _mapEntry
virtual void OnUnloadGridMap(TMap *, GridMap *, uint32, uint32)
virtual void OnPlayerLeave(TMap *, Player *)
virtual void OnDestroy(TMap *)
virtual void OnCreate(TMap *)
virtual void OnPlayerEnter(TMap *, Player *)
MapEntry const * GetEntry()
virtual void OnLoadGridMap(TMap *, GridMap *, uint32, uint32)
bool IsDatabaseBound() const FINAL
virtual OutdoorPvP * GetOutdoorPvP() const =0
OutdoorPvPScript(const char *name)
virtual void OnChat(Player *, ChatMsg, Language, std::string &, Group *)
virtual void OnTalentsReset(Player *, bool)
virtual void OnSave(Player *)
virtual void OnChat(Player *, ChatMsg, Language, std::string &, Player *)
virtual void OnLevelChanged(Player *, uint8)
virtual void OnPVPKill(Player *, Player *)
virtual void OnLogout(Player *)
virtual void OnSpellCast(Player *, Spell *, bool)
virtual void OnDuelRequest(Player *, Player *)
virtual void OnFreeTalentPointsChanged(Player *, uint32)
virtual void OnDelete(uint64)
virtual void OnReputationChange(Player *, uint32, int32 &, bool)
virtual void OnCreatureKill(Player *, Creature *)
virtual void OnBindToInstance(Player *, DifficultyID, uint32, bool)
virtual void OnChat(Player *, ChatMsg, Language, std::string &)
virtual void OnDuelStart(Player *, Player *)
PlayerScript(const char *name)
virtual void OnGiveXP(Player *, uint32 &, Unit *)
virtual void OnMapChanged(Player *)
virtual void OnDuelEnd(Player *, Player *, DuelCompleteType)
virtual void OnChat(Player *, ChatMsg, Language, std::string &, Guild *)
virtual void OnChat(Player *, ChatMsg, Language, std::string &, Channel *)
virtual void OnUpdateZone(Player *, uint32, uint32)
virtual void OnCreate(Player *)
virtual void OnEmote(Player *, uint32)
virtual void OnTextEmote(Player *, uint32, uint32, uint64)
virtual void OnMoneyChanged(Player *, int64 &)
virtual void OnLogin(Player *, bool)
virtual void OnPlayerKilledByCreature(Creature *, Player *)
bool OnItemUse(Player *player, Item *item, SpellCastTargets const &targets)
bool OnGossipHello(Player *player, Creature *creature)
void OnPlayerLogin(Player *player, bool firstLogin)
void OnPlayerCreate(Player *player)
void OnBaseGainCalculation(uint32 &gain, uint8 playerLevel, uint8 mobLevel, ContentLevels content)
void OnPlayerTalentsReset(Player *player, bool noCost)
void OnGuildAddMember(Guild *guild, Player *player, uint8 &plRank)
void OnOpenStateChange(bool open)
uint32 GetDialogStatus(Player *player, Creature *creature)
void OnGuildEvent(Guild *guild, uint8 eventType, uint32 playerGuid1, uint32 playerGuid2, uint8 newRank)
void OnPlayerTextEmote(Player *player, uint32 textEmote, uint32 emoteNum, uint64 guid)
void OnGroupChangeLeader(Group *group, uint64 newLeaderGuid, uint64 oldLeaderGuid)
void OnAuctionSuccessful(AuctionHouseObject *ah, AuctionEntry *entry)
void OnPlayerChat(Player *player, ChatMsg type, Language lang, std::string &msg)
void OnPlayerFreeTalentPointsChanged(Player *player, uint32 newPoints)
void OnLoadGridMap(Map *map, GridMap *gmap, uint32 gx, uint32 gy)
void ModifyPeriodicDamageAurasTick(Unit *target, Unit *attacker, uint32 &damage)
bool OnQuestAccept(Player *player, Item *item, Quest const *quest)
void OnHonorCalculation(float &honor, uint8 level, float multiplier)
void OnGameObjectDestroyed(GameObject *go, Player *player)
void OnUnknownPacketReceive(WorldSocket *socket, WorldPacket packet)
void OnDestroyMap(Map *map)
void OnGrayLevelCalculation(uint8 &grayLevel, uint8 playerLevel)
Battleground * CreateBattleground(BattlegroundTypeId typeId)
bool IsScriptScheduled() const
uint32 IncreaseScheduledScriptsCount()
uint32 GetScriptCount() const
void OnGameObjectLootStateChanged(GameObject *go, uint32 state, Unit *unit)
void OnHeal(Unit *healer, Unit *reciever, uint32 &gain)
void OnUninstall(Vehicle *veh)
void OnPlayerLeaveMap(Map *map, Player *player)
void CreateAuraScripts(uint32 spellId, std::list< AuraScript * > &scriptVector)
void OnDynamicObjectUpdate(DynamicObject *dynobj, uint32 diff)
void OnGuildDisband(Guild *guild)
bool OnCriteriaCheck(uint32 scriptId, Player *source, Unit *target)
void OnRemovePassenger(Vehicle *veh, Unit *passenger)
std::vector< ChatCommand > GetChatCommands()
bool OnGossipSelect(Player *player, Creature *creature, uint32 sender, uint32 action)
void OnAuctionExpire(AuctionHouseObject *ah, AuctionEntry *entry)
void OnPlayerMoneyChanged(Player *player, int64 &amount)
void ModifyMeleeDamage(Unit *target, Unit *attacker, uint32 &damage)
void OnMotdChange(std::string &newMotd)
void OnSocketClose(WorldSocket *socket, bool wasNew)
void OnGuildItemMove(Guild *guild, Player *player, Item *pItem, bool isSrcBank, uint8 srcContainer, uint8 srcSlotId, bool isDestBank, uint8 destContainer, uint8 destSlotId)
void OnTransportUpdate(Transport *transport, uint32 diff)
void CreateSpellScripts(uint32 spellId, std::list< SpellScript * > &scriptVector)
void OnGuildRemoveMember(Guild *guild, Player *player, bool isDisbanding, bool isKicked)
bool OnQuestReward(Player *player, Creature *creature, Quest const *quest, uint32 opt)
void OnGroupRemoveMember(Group *group, uint64 guid, RemoveMethod method, uint64 kicker, const char *reason)
void OnPlayerDuelEnd(Player *winner, Player *loser, DuelCompleteType type)
void OnPlayerReputationChange(Player *player, uint32 factionID, int32 &standing, bool incremental)
uint32 DecreaseScheduledScriptCount(size_t count)
void OnPlayerSpellCast(Player *player, Spell *spell, bool skipCheck)
void IncrementScriptCount()
bool OnQuestSelect(Player *player, Creature *creature, Quest const *quest)
void OnGroupAddMember(Group *group, uint64 guid)
void OnPVPKill(Player *killer, Player *killed)
void OnCreatureUpdate(Creature *creature, uint32 diff)
void OnWorldUpdate(uint32 diff)
void ModifySpellDamageTaken(Unit *target, Unit *attacker, int32 &damage)
void OnGroupRateCalculation(float &rate, uint32 count, bool isRaid)
GameObjectAI * GetGameObjectAI(GameObject *go)
void OnReset(Vehicle *veh)
friend class ScriptObject
bool OnGossipSelectCode(Player *player, Creature *creature, uint32 sender, uint32 action, const char *code)
bool OnAreaTrigger(Player *player, AreaTriggerEntry const *trigger)
void OnPlayerDelete(uint64 guid)
void OnGroupDisband(Group *group)
void OnZeroDifferenceCalculation(uint8 &diff, uint8 playerLevel)
void OnPacketSend(WorldSocket *socket, WorldPacket packet)
bool OnDummyEffect(Unit *caster, uint32 spellId, SpellEffIndex effIndex, Item *target)
void OnInstallAccessory(Vehicle *veh, Creature *accessory)
void OnGuildMOTDChanged(Guild *guild, const std::string &newMotd)
void OnDamage(Unit *attacker, Unit *victim, uint32 &damage)
void OnShutdownInitiate(ShutdownExitCode code, ShutdownMask mask)
void OnGuildInfoChanged(Guild *guild, const std::string &newInfo)
void OnPlayerKilledByCreature(Creature *killer, Player *killed)
void OnGainCalculation(uint32 &gain, Player *player, Unit *unit)
void OnPlayerLevelChanged(Player *player, uint8 oldLevel)
const char * ScriptsVersion() const
void OnPlayerSave(Player *player)
void OnGuildBankEvent(Guild *guild, uint8 eventType, uint8 tabId, uint32 playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId)
void OnGameObjectDamaged(GameObject *go, Player *player)
void OnGroupInviteMember(Group *group, uint64 guid)
void OnPacketReceive(WorldSocket *socket, WorldPacket packet)
void OnGuildMemberDepositMoney(Guild *guild, Player *player, uint64 &amount)
void OnPlayerLogout(Player *player)
void OnGivePlayerXP(Player *player, uint32 &amount, Unit *victim)
void OnPlayerEmote(Player *player, uint32 emote)
void OnPlayerDuelRequest(Player *target, Player *challenger)
void OnConfigLoad(bool reload)
void OnMapUpdate(Map *map, uint32 diff)
CreatureAI * GetCreatureAI(Creature *creature)
void OnUnloadGridMap(Map *map, GridMap *gmap, uint32 gx, uint32 gy)
void OnPlayerEnterMap(Map *map, Player *player)
void OnInstall(Vehicle *veh)
OutdoorPvP * CreateOutdoorPvP(OutdoorPvPData const *data)
InstanceScript * CreateInstanceData(InstanceMap *map)
bool OnConditionCheck(Condition *condition, ConditionSourceInfo &sourceInfo)
void CreateSpellScriptLoaders(uint32 spellId, std::vector< std::pair< SpellScriptLoader *, std::multimap< uint32, uint32 >::iterator > > &scriptVector)
void OnGameObjectUpdate(GameObject *go, uint32 diff)
void OnWeatherUpdate(Weather *weather, uint32 diff)
bool OnQuestComplete(Player *player, Creature *creature, Quest const *quest)
void OnColorCodeCalculation(XPColorChar &color, uint8 playerLevel, uint8 mobLevel)
std::atomic< long > _scheduledScripts
void OnPlayerUpdateZone(Player *player, uint32 newZone, uint32 newArea)
void OnRelocate(Transport *transport, uint32 waypointId, uint32 mapId, float x, float y, float z)
void OnPlayerBindToInstance(Player *player, DifficultyID difficulty, uint32 mapid, bool permanent)
void OnCreatureKill(Player *killer, Creature *killed)
void OnGuildCreate(Guild *guild, Player *leader, const std::string &name)
uint32 DecreaseScheduledScriptCount()
void OnAuctionAdd(AuctionHouseObject *ah, AuctionEntry *entry)
void OnAddCreaturePassenger(Transport *transport, Creature *creature)
void OnPlayerDuelStart(Player *player1, Player *player2)
void OnGuildMemberWitdrawMoney(Guild *guild, Player *player, uint64 &amount, bool isRepair)
void OnAuctionRemove(AuctionHouseObject *ah, AuctionEntry *entry)
void OnGameObjectStateChanged(GameObject *go, uint32 state)
void OnSocketOpen(WorldSocket *socket)
void OnWeatherChange(Weather *weather, WeatherState state, float grade)
bool OnItemExpire(Player *player, ItemTemplate const *proto)
void OnCreateMap(Map *map)
void OnAddPassenger(Vehicle *veh, Unit *passenger, int8 seatId)
virtual bool IsDatabaseBound() const
const std::string & GetName() const
ScriptObject(const char *name)
virtual void OnSocketOpen(WorldSocket *)
virtual void OnNetworkStop()
virtual void OnUnknownPacketReceive(WorldSocket *, WorldPacket &)
ServerScript(const char *name)
virtual void OnPacketReceive(WorldSocket *, WorldPacket &)
virtual void OnNetworkStart()
virtual void OnSocketClose(WorldSocket *, bool)
virtual void OnPacketSend(WorldSocket *, WorldPacket &)
SpellScriptLoader(const char *name)
virtual SpellScript * GetSpellScript() const
virtual AuraScript * GetAuraScript() const
bool IsDatabaseBound() const FINAL
virtual void OnRelocate(Transport *, uint32, uint32, float, float, float)
TransportScript(const char *name)
virtual void OnAddCreaturePassenger(Transport *, Creature *)
virtual void OnRemovePassenger(Transport *, Player *)
virtual void OnAddPassenger(Transport *, Player *)
bool IsDatabaseBound() const FINAL
virtual void OnDamage(Unit *, Unit *, uint32 &)
virtual void ModifySpellDamageTaken(Unit *, Unit *, int32 &)
virtual void ModifyPeriodicDamageAurasTick(Unit *, Unit *, uint32 &)
UnitScript(const char *name, bool addToScripts=true)
virtual void ModifyMeleeDamage(Unit *, Unit *, uint32 &)
virtual void OnHeal(Unit *, Unit *, uint32 &)
virtual ~UpdatableScript()
virtual void OnUpdate(TObject *, uint32)
virtual void OnReset(Vehicle *)
virtual void OnAddPassenger(Vehicle *, Unit *, int8)
virtual void OnUninstall(Vehicle *)
VehicleScript(const char *name)
virtual void OnInstall(Vehicle *)
virtual void OnRemovePassenger(Vehicle *, Unit *)
virtual void OnInstallAccessory(Vehicle *, Creature *)
bool IsDatabaseBound() const FINAL
virtual void OnChange(Weather *, WeatherState, float)
WeatherScript(const char *name)
WorldMapScript(const char *name, uint32 mapId)
virtual void OnConfigLoad(bool)
virtual void OnShutdownCancel()
virtual void OnShutdown()
WorldScript(const char *name)
virtual void OnOpenStateChange(bool)
virtual void OnShutdownInitiate(ShutdownExitCode, ShutdownMask)
virtual void OnMotdChange(std::string &)
virtual void OnUpdate(uint32)
Handler that can communicate over stream sockets.