Commit Graph

7984 Commits

Author SHA1 Message Date
joschiwald ae36ddefec Core/Scripts: add creature_text to pet mojo
Scripts/Karazhan/Moroes: cleanup a bit (should fixes mem leak)
2013-08-31 16:48:37 +02:00
Vincent-Michael 3f6296b65e Merge branch 'master' of github.com:TrinityCore/TrinityCore 2013-08-30 23:09:01 +02:00
Nay 7ecf4fdec1 Core/Quests: Split Flags and SpecialFlags 2013-08-30 23:08:40 +02:00
Shauren 16eefd18fa Scripts/Icecrown Citaldel: Fixed spells cast by Professor Putricide during heroic Festergut and Rotface encounters
Closes #7641
Closes #8243
2013-08-30 23:00:43 +02:00
Machiavelli 4b5c4ab12a Core/CharacterHandler: Some more rules for CMSG_CHAR_ENUM allowance
Thanks to @TakenBacon for heads up
2013-08-30 21:52:59 +01:00
jackpoz be7d82ba8d Core/Maps: Fix Spline triggered assert
Fix an assert triggered by float to int32 cast overflowing to -1, now it replaces -1 with max int32 value.
Fix another assert triggered by Vector3 magnitude float overflow to max/infinity in StaticMapTree::isInLineOfSight(), in this case return false.

Both asserts can be reproduced by casting Mind Control to a NPC, tele to z: 1.0e+38 using client hack tools, move to allow the server to register the new position and stop Mind Control.

Closes #8970
Closes #10578
Closes #10355
Closes #10673
2013-08-30 21:27:04 +01:00
Machiavelli e3f27a36fe Core/Creatures: Fix base stats calculations for some cases.
i.e. health_mod of 0.001 resulting in hp of 0 instead of 1
2013-08-30 20:59:29 +01:00
Vincent-Michael 87e105c818 Core: Fix warning 2013-08-30 20:56:41 +02:00
Nay 7776016106 Core/Quests: Remove CastedCreatureOrGO method
- Remove EAI's ACTION_T_CAST_EVENT and ACTION_T_CAST_EVENT_ALL
- Remove SAI's SMART_ACTION_CALL_CASTEDCREATUREORGO
- Split QUEST_TRINITY_FLAGS_KILL_OR_CAST into QUEST_TRINITY_FLAGS_KILL and QUEST_TRINITY_FLAGS_CAST
- Assign QUEST_TRINITY_FLAGS_CAST to all the quests that were using RequiredSpellCastX
- (unrelated) Fix a warning in Player.cpp
- Replace CastedCreatureOrGO usage in scripts by KilledMonsterCredit

TODO: Convert the two EAI scripts commented out in the .sql to proper SAI

Closes #10667
2013-08-30 19:32:08 +01:00
Nay aa5bc37e9c Core: Yet more warning fixes 2013-08-30 16:03:37 +01:00
Nay 1903d4ca7d Core/Server: Fix a spammy warning in WorldSession and move code to .cpp 2013-08-30 15:44:17 +01:00
Spp 9bea4fc451 Core/RBAC: Move ban commands to RBAC (using individual permissions) 2013-08-30 16:26:52 +02:00
Spp 2b69f83823 Core/RBAC: Move Achievements and Arena commands to RBAC (using individual permissions) 2013-08-30 16:14:00 +02:00
Spp 109188a203 Core/RBAC: Move account commands to RBAC (using individual permissions) 2013-08-30 15:53:29 +02:00
Spp ea26928a99 Core/RBAC: Move RBAC commands to RBAC using individual permissions
- Use this commit as a sample on how to move commands to RBAC
2013-08-30 14:52:53 +02:00
Spp 3232b69ff3 Core/RBAC: Move commands security to RBAC (using generic RBAC Permissions)
- Warning: This will break commands for any custom security level
2013-08-30 13:57:09 +02:00
Nay ec837b1d7d Merge pull request #10666 from xjose93/SmartScripts-StartEvent
Implement SMART_ACTION_GAME_EVENT_STOP (111) and SMART_ACTION_GAME_EVENT_START (112).
2013-08-29 16:36:42 -07:00
xjose93 c3afc00571 Implement SMART_ACTION_GAME_EVENT_STOP (111) and SMART_ACTION_GAME_EVENT_START (112). 2013-08-30 01:23:01 +02:00
Machiavelli 213998e2d7 Core/NetworkIO: Allow CMSG_CHAR_ENUM after char creation and char deletion
Perhaps these calls could be better placed but it's a matter of trial
and error to see what is most effective.
2013-08-30 00:05:57 +01:00
Machiavelli 9346695129 Core: Few fixes for previous commit. 2013-08-29 21:55:29 +01:00
Machiavelli 59b4c34924 Core/NetworkIO: Generic packet spam solution
Currently regulates the usage of CMSG_CHAR_ENUM only, but can be easily
extended to detect inappropriate network behaviour by using
AntiDOS.AllowOpcode in WorldSession's handlers.
2013-08-29 16:46:28 +01:00
Nay 3b71172e8a Core/Quests: Fix a typo in a previous commit
Closes #10664
2013-08-29 16:01:48 +01:00
Nay 62d1ee680b Core/Quests: Drop world.quest_template.RequiredSpellCastX
These were non-wdb fields that didn't have much use.
Most quests that were using these fields (not many) should still work,
however, if you find any quest that worked before and is now broken
please report it in the issue tracker and it will be promptly fixed.
2013-08-29 15:36:38 +01:00
Kirkhammett e23b6436c5 Core/Quests: Escape from Silverbrook 12308 2013-08-29 14:37:29 +02:00
Kirkhammett c84f545708 Core/SmartAI: Add passive check for WP movement 2013-08-29 14:35:22 +02:00
joschiwald 76171984f1 Scripts/Spells: fix codestyle in 48783b8606 2013-08-29 03:08:08 +02:00
Kirkhammett 48783b8606 Core/Quests: Fuel for the Fire (12690) 2013-08-29 00:50:14 +02:00
Vincent-Michael a917461762 DB/Misc: Fix startup errors 2013-08-28 19:06:20 +02:00
joschiwald f5f0e6439c Scripts/UtgardeKeep/Ingvar: remove hacks and fix warning 2013-08-28 17:11:14 +02:00
Aokromes 2bd4a479a6 Core/Quests: Add repeatable quest rate to world.reputation_reward_rate 2013-08-28 14:52:23 +01:00
Nay 7135abf3a0 Merge branch 'master' of github.com:TrinityCore/TrinityCore 2013-08-27 23:56:34 +01:00
Nay 78786c7b54 Core&Scripts: Fix clang compiler warnings 2013-08-27 23:47:03 +01:00
joschiwald 1f34284828 Scripts/UtgardeKeep: reworked InstanceScript and cleanup some boss script 2013-08-27 23:50:40 +02:00
Nay e5dc70118a Server/Collision: Fix build on clang 2013-08-27 19:34:03 +01:00
Nay cc14e18664 Core/Misc: Fix compiler warnings 2013-08-27 16:06:18 +01:00
Shauren 69a616e55d Core/EventAI: Shut up compiler warnings 2013-08-26 19:21:14 +02:00
joschiwald 2aa944caee Scripts/Auchindoun: add missing InstanceScripts and cleanup some boss scripts 2013-08-26 18:52:29 +02:00
Shauren cfd1027b88 Build fix 2013-08-26 18:42:35 +02:00
Shauren 4f44cdf2b5 Core/Scripts: Fixed uninitialized variable and memory leaks 2013-08-26 17:38:02 +02:00
Shauren 664ed816df Merge pull request #10636 from jackpoz/mindvision_fix
Core/Aura: Fix SPELL_AURA_BIND_SIGHT invalid read
2013-08-26 08:23:44 -07:00
Nay 2050a36b58 SAI & Scripts: Fix unitialized values found by Valgrind
==3064== Conditional jump or move depends on uninitialised value(s)
==3064==    at 0x19B3031: boss_skarvald_the_constructor::boss_skarvald_the_constructorAI::UpdateAI(unsigned int) (boss_skarvald_dalronn.cpp:217)

==3064== Conditional jump or move depends on uninitialised value(s)
==3064==    at 0x19B3948: boss_dalronn_the_controller::boss_dalronn_the_controllerAI::UpdateAI(unsigned int) (boss_skarvald_dalronn.cpp:388)

==3064== Conditional jump or move depends on uninitialised value(s)
==3064==    at 0x15E2FCC: SmartScript::ProcessAction(SmartScriptHolder&, Unit*, unsigned int, unsigned int, bool, SpellInfo const*, GameObject*) (SmartScript.cpp:144)
==3064== Conditional jump or move depends on uninitialised value(s)
==3064==    at 0x191CB98: dummy_dragonAI::UpdateAI(unsigned int) (boss_sartharion.cpp:961)
==3064==    by 0x191D242: npc_shadron::npc_shadronAI::UpdateAI(unsigned int) (boss_sartharion.cpp:1122)
==3064== Conditional jump or move depends on uninitialised value(s)
==3064==    at 0x19AE913: boss_ymiron::boss_ymironAI::UpdateAI(unsigned int) (boss_ymiron.cpp:215)

==3064== Use of uninitialised value of size 8
...
==3064==    by 0x18A9F4A: boss_illidan_stormrage::boss_illidan_stormrageAI::Reset() (boss_illidan.cpp:1805)

==3064== Conditional jump or move depends on uninitialised value(s)
...
==3064==    by 0x18A9F4A: boss_illidan_stormrage::boss_illidan_stormrageAI::Reset() (boss_illidan.cpp:1805)

==3064== Conditional jump or move depends on uninitialised value(s)
==3064==    at 0x191CB98: dummy_dragonAI::UpdateAI(unsigned int) (boss_sartharion.cpp:961)
==3064==    by 0x191CE88: npc_tenebron::npc_tenebronAI::UpdateAI(unsigned int) (boss_sartharion.cpp:1027)

==3064== Conditional jump or move depends on uninitialised value(s)
==3064==    at 0x191CB98: dummy_dragonAI::UpdateAI(unsigned int) (boss_sartharion.cpp:961)
==3064==    by 0x191D5B8: npc_vesperon::npc_vesperonAI::UpdateAI(unsigned int) (boss_sartharion.cpp:1220)

==3064== Conditional jump or move depends on uninitialised value(s)
...
==3064==    by 0x1868F59: boss_lady_vashj::boss_lady_vashjAI::Reset() (boss_lady_vashj.cpp:206)

==3064== Conditional jump or move depends on uninitialised value(s)
==3064==    at 0x191C14C: dummy_dragonAI::MovementInform(unsigned int, unsigned int) (boss_sartharion.cpp:802)

==3064== Conditional jump or move depends on uninitialised value(s)
==3064==    at 0x1046986: Position::NormalizeOrientation(float) (Object.h:388)
...
==3064==    by 0x17D9463: boss_malchezaar::boss_malchezaarAI::SummonInfernal(unsigned int) (boss_prince_malchezaar.cpp:373)
2013-08-26 16:13:26 +01:00
jackpoz 2a47b602d7 Core/Aura: Fix SPELL_AURA_BIND_SIGHT invalid read
Mind Vision has Aura Effect SPELL_AURA_BIND_SIGHT which adds the target to a special Map container i_objectsToSwitch, used to switch grid containers for target Creatures of this Aura Effect.

When the target is a Creature, when the Creature is removed from world it's added to i_objectsToSwitch and then to i_objectsToRemove, iterated in this order in Map::RemoveAllObjectsInRemoveList() so the reference in i_objectsToSwitch is valid.
When the target is a Player, when the Player logs out it's added to i_objectsToSwitch but then Map::RemovePlayerFromMap() deletes the Player, leaving an invalid reference in i_objectsToSwitch.

Since the whole point of i_objectsToSwitch is to store Creatures and since the stored references are used only if the condition "GetTypeId() == TYPEID_UNIT" is verified, it's safe to add only objects of TYPEID_UNIT type to the container.

Valgrind log:
 Invalid read of size 4
   at 0xC52332: Object::GetTypeId() const (Object.h:140)
   by 0xF540D3: Map::RemoveAllObjectsInRemoveList() (Map.cpp:2136)
   by 0xF53CD2: Map::DelayedUpdate(unsigned int) (Map.cpp:2087)
   by 0xF639B1: MapManager::Update(unsigned int) (MapManager.cpp:292)
   by 0x107CB40: World::Update(unsigned int) (World.cpp:2025)
   by 0xBEB263: WorldRunnable::run() (WorldRunnable.cpp:60)
   by 0x1213792: ACE_Based::Thread::ThreadTask(void*) (Threading.cpp:186)
   by 0x515EA35: ACE_OS_Thread_Adapter::invoke() (in /usr/lib/libACE-6.0.3.so)
   by 0x5F19F8D: start_thread (pthread_create.c:311)
   by 0x6A46E1C: clone (clone.S:113)
 Address 0x401eacac is 12 bytes inside a block of size 11,736 free'd
   at 0x4C2B59C: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0xD80239: Player::~Player() (Player.cpp:915)
   by 0xF4D5A2: void Map::DeleteFromWorld<Player>(Player*) (Map.cpp:319)
   by 0xF4EBBB: Map::RemovePlayerFromMap(Player*, bool) (Map.cpp:687)
   by 0xFCC18D: WorldSession::LogoutPlayer(bool) (WorldSession.cpp:531)
   by 0xF1EDD5: WorldSession::HandleLogoutRequestOpcode(WorldPacket&) (MiscHandler.cpp:403)
   by 0xFCAE37: WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:312)
   by 0x107EBC6: World::UpdateSessions(unsigned int) (World.cpp:2615)
   by 0x107C94B: World::Update(unsigned int) (World.cpp:1978)
   by 0xBEB263: WorldRunnable::run() (WorldRunnable.cpp:60)
   by 0x1213792: ACE_Based::Thread::ThreadTask(void*) (Threading.cpp:186)
   by 0x515EA35: ACE_OS_Thread_Adapter::invoke() (in /usr/lib/libACE-6.0.3.so)
2013-08-26 16:49:02 +02:00
Nay 9327832896 Merge pull request #10633 from jackpoz/createguild_fix
Core/Guild: Fix uninitialized value on guild creation
2013-08-26 05:27:31 -07:00
jackpoz 287eb260b5 Core/Guild: Fix uninitialized value on guild creation
Fix GuildMember flags left uninitialized when creating a new guild.

Valgrind log:
 Conditional jump or move depends on uninitialised value(s)
  at 0xEE49CE: Guild::Member::WritePacket(WorldPacket&) const (Guild.cpp:714)
  by 0xEE721E: Guild::HandleRoster(WorldSession*) (Guild.cpp:1314)
  by 0xEE9EBA: Guild::SendLoginInfo(WorldSession*) (Guild.cpp:1920)
  by 0xEEB689: Guild::AddMember(unsigned long, unsigned char) (Guild.cpp:2230)
  by 0xEE6A09: Guild::Create(Player*, std::string const&) (Guild.cpp:1199)
  by 0x12A71F9: guild_commandscript::HandleGuildCreateCommand(ChatHandler*, char const*) (cs_guild.cpp:92)
  by 0xC47DBE: ChatHandler::ExecuteCommandInTable(ChatCommand*, char const*, std::string const&) (Chat.cpp:362)
  by 0xC47C23: ChatHandler::ExecuteCommandInTable(ChatCommand*, char const*, std::string const&) (Chat.cpp:343)
  by 0xC488C4: ChatHandler::ParseCommands(char const*) (Chat.cpp:489)
  by 0x1188EE3: WorldSession::HandleMessagechatOpcode(WorldPacket&) (ChatHandler.cpp:217)
  by 0xFCAE37: WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:312)
  by 0x107EBC6: World::UpdateSessions(unsigned int) (World.cpp:2615)
2013-08-26 14:01:19 +02:00
Nay 8eaf763235 Core&Tools: Fix multiple issues found by a static code coverage tool 2013-08-26 02:00:18 +01:00
Machiavelli 39ccd4a460 Merge pull request #10624 from jackpoz/instancesavemgr
Core/Instances: Fix mutex released after being deleted
2013-08-25 12:14:50 -07:00
jackpoz a3bdf90b0a Core/Instances: Fix mutex released after being deleted
Modify how InstanceSave is deleted so the local mutex can be released before deleting the class itself.

Valgrind log:
 Invalid read of size 4
  at 0x662662B: __pthread_mutex_unlock_usercnt (pthread_mutex_unlock.c:52)
  by 0x55D3C55: ACE_OS::mutex_unlock(pthread_mutex_t*) (OS_NS_Thread.cpp:2335)
  by 0xB20057: Player::CleanupsBeforeDelete(bool) (OS_NS_Thread.inl:3519)
  by 0xD0E2FA: WorldSession::LogoutPlayer(bool) (WorldSession.cpp:527)
  by 0xC66D34: WorldSession::HandleLogoutRequestOpcode(WorldPacket&) (MiscHandler.cpp:403)
  by 0xD0EA82: WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:312)
  by 0xD9AD66: World::UpdateSessions(unsigned int) (World.cpp:2615)
  by 0xD9BEC4: World::Update(unsigned int) (World.cpp:1978)
  by 0xA035E5: WorldRunnable::run() (WorldRunnable.cpp:60)
  by 0xEC8D39: ACE_Based::Thread::ThreadTask(void*) (Threading.cpp:183)
  by 0x55D7555: ACE_OS_Thread_Adapter::invoke() (OS_Thread_Adapter.cpp:103)
  by 0x6622B4F: start_thread (pthread_create.c:304)
Address 0x1884bb08 is 56 bytes inside a block of size 104 free'd
  at 0x4C279DC: operator delete(void*) (vg_replace_malloc.c:457)
  by 0xC9D533: InstanceSaveManager::RemoveInstanceSave(unsigned int) (InstanceSaveMgr.cpp:159)
  by 0xC9E826: InstanceSave::UnloadIfEmpty() (InstanceSaveMgr.cpp:238)
  by 0xB2003E: Player::CleanupsBeforeDelete(bool) (InstanceSaveMgr.h:84)
  by 0xD0E2FA: WorldSession::LogoutPlayer(bool) (WorldSession.cpp:527)
  by 0xC66D34: WorldSession::HandleLogoutRequestOpcode(WorldPacket&) (MiscHandler.cpp:403)
  by 0xD0EA82: WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:312)
  by 0xD9AD66: World::UpdateSessions(unsigned int) (World.cpp:2615)
  by 0xD9BEC4: World::Update(unsigned int) (World.cpp:1978)
  by 0xA035E5: WorldRunnable::run() (WorldRunnable.cpp:60)
  by 0xEC8D39: ACE_Based::Thread::ThreadTask(void*) (Threading.cpp:183)
  by 0x55D7555: ACE_OS_Thread_Adapter::invoke() (OS_Thread_Adapter.cpp:103)
2013-08-25 19:08:22 +02:00
Nay 3e2f037b20 Core&Tools: Fix warnings and non-pch build 2013-08-25 14:27:40 +01:00
jackpoz ee3d3ab1ff Core/Player: Fix uninitialized Player field.
m_MonthlyQuestChanged was initialized only when loading a Player from DB and left uninitialized when creating a new Player.

Valgrind log:
 Conditional jump or move depends on uninitialised value(s)
   at 0x1148E2A: Player::_SaveMonthlyQuestStatus(Trinity::AutoPtr<Transaction, ACE_Thread_Mutex>&) (Player.cpp:19694)
   by 0x1146510: Player::SaveToDB(bool) (Player.cpp:19191)
   by 0x14F5D5C: WorldSession::HandleCharCreateCallback(Trinity::AutoPtr<PreparedResultSet, ACE_Thread_Mutex>, CharacterCreateInfo*) (CharacterHandler.cpp:660)

Closes #10620

Signed-off-by: Nay <dnpd.dd@gmail.com>
2013-08-25 14:04:17 +01:00
raczman ba22baebbd Core/Auth: Implement time-based token for user login as described in RFC 6238.
New column in account table is a base32 of token key bytes,
coincidentally it is the same format Google's Authenticator Android app uses.
If you want that to work, set system time on server correctly and use ntpd.

Closes #10527

Signed-off-by: Nay <dnpd.dd@gmail.com>
2013-08-25 14:02:40 +01:00