jackpoz
dbed818f6f
Core/SAI: Fix crash
...
Disable script type SMART_SCRIPT_TYPE_TIMED_ACTIONLIST actions if they are trying to overwrite the timed action list while iterating it.
This was invalidating the iterator and deleting any smart action stored in it, including the current executed one.
Valgrind log:
Invalid read of size 1
at SmartScript::OnUpdate(unsigned int) (SmartScript.cpp:3258)
by SmartAI::UpdateAI(unsigned int) (SmartAI.cpp:331)
by Creature::Update(unsigned int) (Creature.cpp:544)
Address 0x1807d9b2 is 10 bytes after a block of size 40 alloc'd
at operator new(unsigned long) (vg_replace_malloc.c:319)
...
by SmartAIMgr::LoadSmartAIFromDB() (SmartScriptMgr.cpp:231)
by World::SetInitialWorldSettings() (World.cpp:1724)
by Master::Run() (Master.cpp:169)
by main (Main.cpp:142)
2014-02-08 21:59:35 +01:00
jackpoz
b8625f41bd
Core/SAI: Fix crash in SmartScript
...
Fix crash in SmartScript storing WorldObject* instead of guid as targets in SmartScript::mTargetStorage , used by SMART_TARGET_STORED target type , SMART_ESCORT_TARGETS and other escort related code.
Fixes #11228 , #10157 .
Valgrind log:
Invalid read of size 4
at : Object::GetTypeId() const (Object.h:140)
by : SmartScript::IsPlayer(WorldObject*) (SmartScript.h:73)
by : SmartScript::ProcessAction(SmartScriptHolder&, Unit*, unsigned int, unsigned int, bool, SpellInfo const*, GameObject*) (SmartScript.cpp:330)
by : SmartScript::ProcessEvent(SmartScriptHolder&, Unit*, unsigned int, unsigned int, bool, SpellInfo const*, GameObject*) (SmartScript.cpp:2662)
by : SmartScript::ProcessAction(SmartScriptHolder&, Unit*, unsigned int, unsigned int, bool, SpellInfo const*, GameObject*) (SmartScript.cpp:2226)
by : SmartScript::ProcessTimedAction(SmartScriptHolder&, unsigned int const&, unsigned int const&, Unit*, unsigned int, unsigned int, bool, SpellInfo const*, GameObject*) (SmartScript.cpp:2238)
by : SmartScript::ProcessEvent(SmartScriptHolder&, Unit*, unsigned int, unsigned int, bool, SpellInfo const*, GameObject*) (SmartScript.cpp:2685)
by : SmartScript::UpdateTimer(SmartScriptHolder&, unsigned int) (SmartScript.cpp:3198)
by : SmartScript::OnUpdate(unsigned int) (SmartScript.cpp:3244)
by : SmartAI::UpdateAI(unsigned int) (SmartAI.cpp:331)
by : Creature::Update(unsigned int) (Creature.cpp:544)
by : void Trinity::ObjectUpdater::Visit<Creature>(GridRefManager<Creature>&) (GridNotifiers.cpp:340)
2014-01-12 20:23:13 +01:00
Vincent_Michael
20004050bc
Update copyright note for 2014.
...
Happy new year.
2014-01-01 00:07:53 +01:00
Malcrom
fe95371d9a
Core/Scripting: Replace casted with cast as casted is not a word.
2013-12-25 14:16:55 -03:30
Shauren
5e8f829181
Core/SAI: Fixed a crash in call for help/flee for assist actions when they had an emote attached
2013-12-24 11:26:07 +01:00
Shauren
107af52853
Core/Chat: Refactored building chat packets
...
* Moved everything into one specialized method instead of being scattered all over the place
* Allow localizing creature names in chat messages (when using $N)
* Send SMSG_GM_MESSAGECHAT for gm messages
2013-12-23 14:23:49 +01:00
Discover-
c5788de8a4
Core/SAI: Fix another memory leak, thanks to @Xter
2013-12-19 10:50:16 +01:00
Discover-
e44e932d4d
Core/SAI: Fix two memoryleaks in my previous commits. Thanks to @Xter for the notice.
2013-12-19 10:28:45 +01:00
Discover-
e5f7beecf5
Core/SAI: Using SMART_ACTION_FORCE_DESPAWN now despawns the given target_type instead of always the creature itself.
2013-12-18 10:06:19 +01:00
Discover-
a0f7fee922
Core/SAI: Fix compile
...
Core/SAI: Don't limit SMART_ACTION_SET_INGAME_PHASE_MASK to unit targets only. Thanks to @Shauren for the notice.
2013-12-17 11:38:29 +01:00
Discover-
154ee466eb
Core/SAI: Using the action_type SMART_ACTION_SET_REACT_STATE now sets the react state of the target_type. Won't break any scripts as all current cases of this action_type have target_type 1 (SMART_TARGET_SELF).
2013-12-17 11:10:23 +01:00
Discover-
1f4d585bef
Core/SAI: In all npc flag related action_types we now check if the target is a creature instead of an unit (creature/player).
2013-12-17 11:06:07 +01:00
Discover-
20a22662df
Core/SAI: Using SMART_ACTION_SET_FOLLOW with target_type 0 (SMART_TARGET_NONE) will now stop the following completely. Fixes 6 scripts in a clean TDB already using this functionality even though it wasn't implemented.
2013-12-17 10:12:23 +01:00
Discover-
54b7162f1d
Core/SAI: Make SMART_ACTION_SET_INGAME_PHASE_MASK set the phasemask of the target_type instead of always the source calling the action type.
2013-12-17 09:44:06 +01:00
Discover-
e17af3f203
Core/Quests: Fix an issue where auto-completed quests would not be automatically completed if the quest was added through either the SmartAI action_type SMART_ACTION_ADD_QUEST, the spell effect SPELL_EFFECT_QUEST_START or the opcode CMSG_QUEST_CONFIRM_ACCEPT. Also fixes auto-complete quests in the SAI and opcode case not calling the AI hook.
2013-12-14 19:42:31 +01:00
Discover-
4ca63412c8
Core/SmartAI: SMART_ACTION_UPDATE_TEMPLATE will no longer ignore the target type and force the source creature (creature only) to be updated; from now on it updates the given targets to the given entry (actionparam1)
2013-12-13 09:45:58 +01:00
joschiwald
eddf1b5a64
Scripts: replace some SetOrientation() calls with spline packets and some random changes
2013-12-10 18:46:11 +01:00
Malcrom
b407e72339
Core/SmartScript: Allow flag to be added to spell to determine combat movement.
...
Greatly simplifies SAI combat scripting.
2013-12-03 20:53:33 -03:30
Spp
65cd07a288
Core: Improve error messages for linked_respawn table (and minor cosmetic changes here and there)
2013-11-11 11:03:32 +01:00
Spp
94e2b9332a
Core/Logging: Remove LOG_FILTER_XXX defines with it's value (remember logger names are case-sensitive)
2013-11-08 10:50:51 +01:00
leguybrush
0a308144a8
Core/Code: Unify [more] codestyle for brackets: )\n{\n} to ) { }.
2013-10-28 14:36:07 -04:00
Discover-
0cc32e28e3
Core/SAI: Rename SMART_EVENT_TARGET_CASTING to SMART_EVENT_VICTIM_CASTING as that's what it actually does. It was often confused to use the target_type field instead of the victim.
2013-10-22 15:59:32 +02:00
Discover-
1a6157985c
Core/Misc: Get rid of some useless code
2013-10-21 09:15:17 +02:00
Shauren
ce55647c41
Core/Transports
...
* Rewritten path generation, now uses splines - timers are a lot more accurate now
* Implemented stopping transports
* Implemented spawning transports in instances
* Implemented spawning gameobjects as transport passengers
* Transport passengers are now stored in creature/gameobject table using gameobject_template.data6 from transport's template as map id
2013-10-16 18:37:29 +02:00
Discover-
ca02411eff
Core/SAI: When the castflags are set to both SMARTCAST_AURA_NOT_PRESENT and SMARTCAST_INTERRUPT_PREVIOUS, we only interrupt the spell if there is actually a spell cast.
2013-10-11 16:57:28 +02:00
Ellie
c803cc1f5c
Merge branch 'master' of github.com:TrinityCore/TrinityCore into string_concatenation
2013-10-01 01:14:32 -07:00
Ellie
1fae858645
Whitespace between string literals and user-defined literals is now mandatory for concatenation in C++11
2013-10-01 01:13:13 -07:00
Discover-
11d9a44508
Core/SAI: Properly implement the second parameter of SMART_ACTION_CALL_TIMED_ACTIONLIST to reflect the wiki (which also makes more sense)
2013-10-01 10:08:05 +02:00
Discover-
80ce30ac7d
Core/SAI: Add 'playerOnly' parameters to SMART_TARGET_CLOSEST_ENEMY and SMART_TARGET_CLOSEST_FRIENDLY. Wiki is updated accordingly.
2013-09-30 10:11:02 +02:00
jackpoz
c256a0330a
Merge branch 'master' of github.com:TrinityCore/TrinityCore
2013-09-24 23:35:11 +02:00
jackpoz
ec3832c2c1
Core/AI: Fix uninitialized values and array overflows in SAI
...
Proper initialize POD struct members to 0 in SMART_ACTION_CREATE_TIMED_EVENT action type.
Fix array overflows and access uninitialized values in SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST, SMART_ACTION_RANDOM_PHASE and SMART_ACTION_RANDOM_EMOTE .
Valgrind log for SMART_ACTION_RANDOM_PHASE case:
Conditional jump or move depends on uninitialised value(s)
at : SmartScript::UpdateTimer(SmartScriptHolder&, unsigned int) (SmartScript.cpp:3086)
by : SmartScript::OnUpdate(unsigned int) (SmartScript.cpp:3176)
by : SmartAI::UpdateAI(unsigned int) (SmartAI.cpp:335)
by : Creature::Update(unsigned int) (Creature.cpp:542)
by : TempSummon::Update(unsigned int) (TemporarySummon.cpp:47)
Uninitialised value was created by a stack allocation
at : SmartScript::ProcessAction(SmartScriptHolder&, Unit*, unsigned int, unsigned int, bool, SpellInfo const*, GameObject*) (SmartScript.cpp:143)
2013-09-24 23:33:28 +02:00
Discover-
a0db0728f2
Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
2013-09-23 16:47:47 +02:00
Discover-
9653576cb4
Core/SAI: Using SMART_TARGET_NONE no longer works the same way as SMART_TARGET_ACTION_INVOKER but rather return NULL instead.
...
Fixes #10908
2013-09-23 16:47:22 +02:00
Discover-
69b0a009c4
Core/SAI: Make SMART_ACTION_RANDOM_MOVE also work with SMART_TARGET_NONE and non-creature targets (if a non-creature target_type is specified and no creature target was found, the action is fired at the source)
...
Ref. #7431
2013-09-21 11:21:29 +02:00
Shauren
fcf9552934
Core/SmartScripts: Fixed heap corruption in SMART_ACTION_EQUIP
...
Closes #10739
2013-09-08 12:15:13 +02:00
Discover-
926edaf49d
Tabs to spaces...
2013-09-04 14:07:27 +02:00
Discover-
9761affc8d
Core/SAI: Make SMART_TARGET_OWNER_OR_SUMMONER also work for creatures summoned by spells
2013-09-04 09:35:21 +02:00
Nay
582686090d
Merge pull request #10685 from Discover-/SmartAI-Target-Casting
...
Core/SmartAI: Add a spellid to SMART_EVENT_TARGET_CASTING. If left on 0,...
2013-09-01 10:03:45 -07:00
Nay
c4bd91ceb9
Merge pull request #10690 from Discover-/SmartAI-Set-Home-Pos
...
Core/SAI: Allow using SMART_ACTION_SET_HOME_POS with multiple target typ...
2013-09-01 10:03:09 -07:00
Nay
b324646005
Merge pull request #10689 from Discover-/SmartAI-Killed-Monster-Credit
...
Core/SAI: Also use loot recipient for SMART_ACTION_CALL_KILLEDMONSTER wh...
2013-09-01 10:02:43 -07:00
Nay
a762df0aba
Core/SAI: Fix processing linked events when return is used in ProcessAction
...
Thanks Discover-
Closes #10688
2013-09-01 18:01:59 +01:00
Discover-
8ba8190773
Core/SAI: Allow using SMART_ACTION_SET_HOME_POS with multiple target types
2013-09-01 13:56:35 +02:00
Discover-
7d7fc7b662
Core/SAI: Also use loot recipient for SMART_ACTION_CALL_KILLEDMONSTER when target is SMART_TARGET_SELF (used in four cases in a clean TDB which will be fixed by this)
2013-09-01 13:44:08 +02:00
Discover-
016dac995e
Core/SmartAI: Add a spellid to SMART_EVENT_TARGET_CASTING. If left on 0, it checks for all spells (like it did without these changes)
2013-09-01 10:49:29 +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
xjose93
c3afc00571
Implement SMART_ACTION_GAME_EVENT_STOP (111) and SMART_ACTION_GAME_EVENT_START (112).
2013-08-30 01:23:01 +02: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
Discover-
a0ff0233c5
Core/SmartAI: Implement SMART_TARGET_CLOSEST_FRIENDLY.
...
Parameter is distance to search for.
Closes #10521
2013-08-15 01:22:22 +01:00
Discover-
8c961687a0
Core/SmartAI: Implement SMART_EVENT_FRIENDLY_HEALTH_PCT.
...
On current clean TDB, there are a total of 106 creatures using
SMART_EVENT_FRIENDLY_HEALTH (non-PCT) which has a flat first parameter, but
only 8 of these use the event correctly (and therefore only 8 of them
actually work).
Closes #10520
2013-08-15 01:18:10 +01:00
Nay
54d2b73f3c
Merge pull request #10513 from Discover-/SmartAI-Casted-CreatureOrGo
...
Core/SmartAI: Drop support for SMART_ACTION_SEND_CASTCREATUREORGO. It is...
2013-08-11 06:26:52 -07:00