* fix(Core/Vendors): Load npc_vendor items in the right order
Before that commit, if you copied a npc_vendor, the order would not be replicated (if all items were on the same `slot`). Now it works fine and it's consistent.
* Update ObjectMgr.cpp
* fix(sql): ASC position in the query
* Update ObjectMgr.cpp
Co-authored-by: Stefano Borzì <stefanoborzi32@gmail.com>
Co-authored-by: Francesco Borzì <borzifrancesco@gmail.com>
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
* Remove useless code that was only causing issue to the BG queue
* Prevent new Battlegrounds to start if there are already other Battlegrounds that have free slots
Co-authored-by Yehonal <yehonal.azeroth@gmail.com>
* Change an outError to outDebug
* Fix typos and improve the texts to waste less time for the user
* Added some slightly useful comments for future devs
NEW:
* SMART_TARGET_PLAYER_WITH_AURA (spellid, negation?, distMax, distMin) - if target.O is set it will resize the list of targets to target.o
* SMART_TARGET_RANDOM_POINT (range, amount (for summon creature), self (creature is middle else use xyz) (ONLY USED FOR SUMMON CREATURE OR MOVE/JUMP TO POS ACTIONS FOR NOW)
MODIFIED:
* SMART_ACTION_SUMMON_CREATURE now possible to spawn multiple creatures with SMART_TARGET_RANDOM_POINT
* SMART_ACTION_MOVE_TO_POS/JUMP_TO_POS now possible to move to a random point with SMART_TARGET_RANDOM_POINT
* SMART_TARGET_PLAYER_RANGE no longer targets GMs or dead targets and when target.o is >0 it will try all possible targets in max instead of min-maxing
Co-authored-by: Francesco Borzì <borzifrancesco@gmail.com>
PlayerScript#OnFirstLogin was broken in that if you tried to teach the
player a spell or give an item to him that change wouldn't persist.
Meaning that the next time the Player would log in, his awarded spells
or items would be gone.
Meanwhile PlayerScript#OnLogin didn't have this behavior meaning
that the sematics of PlayerScript#OnFirstLogin and PlayerScript#OnLogin
where very different, which is unexpected.
This issue was caused by an implementation detail in Player#learnSpell
(and similiar) which behaves differently depending on
Player#isBeingLoaded phase. This code change makes its that
PlayerOnFirstLogin hook executes when Player#isBeingLoaded == false
fixing the issue.
Alternatives: The fact that Player#learnSpells and others behave
differently depending on the load phase is questionable and from my
research it seems like this impl detail is only used when giving the
player his template spells. We could add a overload to
Player#learnSpell with a flag like `isSpellTemporary` and make
the template spells loading use it. Then we would be able to remove
this implicit temporary spell mechanism when Player#isBeingLoaded
thing. However this is a deeper change and not worth the risk.