Commit Graph
1150 Commits
Author SHA1 Message Date
Shauren 1c52d5fff7 Core/Misc: Replace NULL with nullptr 2020-08-14 17:06:03 +02:00
Treeston 8be23fcbbd [3.3.5] Combat/Threat rewrite - prep & refactor (#19966)
* Combat/Threat rewrite (PR #19930) prep work. Mostly refactors, and a compatibility layer on ThreatManager/HostileReference that allows scripts to be changed already.

(cherry picked from commit e2a1ccd118d129b96e09ff1a15ed0adb1d4a3897)
2020-08-13 22:46:44 +02:00
Treeston e9392ad287 Core/Authserver: Authserver cleanup (PR#25093)
- Fix a handful of 1/256 bugs with most significant byte zero in BigNumber
- Get rid of (most of) the C-style arrays in authserver
- CryptoRandom as a unified source for cryptographic randomness
- Bring our other crypto APIs into 2020
- BigNumber usability improvements
- Authserver is now actually readable as a result of all of the above

(cherry picked from commit 210176fd915cf4ba16f428d3c1a249a71f4aa7a7)
2020-08-03 19:39:00 +02:00
Aokromes c9e3356ba4 Core/Creatures: Fix typo 2020-07-31 12:37:31 +02:00
Shauren 1340f2cdb3 Core/Creatures: Move gossip trainer assignment to creature_trainer table - same gossip can open different trainers depending on which creature it is assigned to
Closes #21723
2020-07-31 11:21:24 +02:00
treeston 118e53f1b8 Combat/threat rewrite prep - merge RBAC/DB changes.
(cherry picked from commit e35092c6a164e929f9684b350093b2beefee5d86)
2020-07-16 22:06:56 +02:00
S.V ced4820252 Core/Scripts: Fixed GAMEOBJECT_TYPE_DOOR closing automatically after being opened with .gobj act (#19342)
Closes #19261.

(cherry picked from commit 3eba0937047a1586d42f813ee21fb1752ae85853)
2020-07-16 22:00:30 +02:00
treeston f8fa4d734c Correct some missing auth DB changes from b59ca1c.
(cherry picked from commit 41eddd59aa3c911ba77f9ffbb85af42a4e6c2b53)
2020-07-16 22:00:30 +02:00
treeston 29db04c3c9 Rename .debug uws to .debug worldstate (clarity change).
(cherry picked from commit b59ca1cc81c08bbe043f8974f41fee191e7fd6ad)
2020-07-16 22:00:29 +02:00
treeston 64d8b183de Add new command 'npc showloot'. Does exactly what it says on the tin.
(cherry picked from commit 6f29aac93626ce37922c3c9a85d20b2e4d9d3bbc)
2020-07-16 22:00:29 +02:00
treeston 17a0139b0e - Add new commands .group set assistant, .group set maintank and .group set mainassist to toggle raid member flags.
- Fix 2017_05_29_00_auth.sql to be reapply safe.

(cherry picked from commit ac0f76f8c57bba195b773a6a31ade2e8e2318aeb)
2020-07-16 22:00:29 +02:00
treeston 7df8546d7e Removed a now-unused local (ca02629 follow-up)
(cherry picked from commit 4e41d3e6bd90047e2f9e228b6f3adc52012d7b08)
2020-07-16 22:00:29 +02:00
treeston f543e570d6 Make some adjustments to .summon and .group summon behavior to make them more permissive:
- Now only requires the either target's group leader or target itself to be on your map
- Now summons all applicable group members even if one member fails checks
- No longer has some truly weird edge case instance unbind code that could cause exploit behavior (Really, I have no idea why this existed, because it certainly didn't do what it might've been meant to do.)

(cherry picked from commit ca0262995053e0e5baef7e97211fec8f81664ea7)
2020-07-16 22:00:29 +02:00
treeston 5392212799 So, I came in trying to fix gameobject LoS. So I restructured some stuff.
Then it turned out that gameobject LoS is already fixed. So all this does, really, is restructure some stuff.
And remove the hack from Sapphiron because I could.

(cherry picked from commit d57307f63d8deb51003d61163adccce4e2c1bd47)
2020-07-16 22:00:28 +02:00
Treeston 51ce3b1c1d [3.3.5] Get zone/area IDs from vmap data in the liquid update (#19840)
* Add new method Map::getFullVMapDataForPosition to get area info and liquid info in a single vmap lookup
* Use this lookup in Map:: relocation methods to update m_areaId and m_zoneId fields on WorldObject
* Adjust GetZoneId/GetAreaId on WorldObject to always return these cached fields
* Clean up liquid state handling on Unit and Player
* Hand floor's Z coord up through GetFullTerrainStatusForPosition, use it to update a new field in WorldObject, and use that to feed a new GetFloorZ call on WorldObject.

Closes #16489

(cherry picked from commit f6c849729b27b77228704b595de3adaf24da2c10)
2020-07-16 22:00:24 +02:00
treeston 4179036bbe Some improvements to .debug raidreset command. Now supports heroic difficulty 5-man dungeons and outputs sensible text, as opposed to silently doing (or not doing) stuff.
(cherry picked from commit a3b198c7e19d6627e6078702ffcbaa67969e4943)
2020-07-16 21:47:15 +02:00
Shauren deca201f77 Core/DataStores: Simplified string memory allocation in db2 files, dropped unneccessary level of indirection 2020-06-27 13:33:17 +02:00
Shauren bbdabd7d77 Core/Players: Remove deprecated skill related config AlwaysMaxWeaponSkill and command .maxskill 2020-06-25 14:45:28 +02:00
ForesterDev 01d098830a DB/Account: update account_access table (#24788)
* DB/Account: update account_access table:

- rename fields id -> AccountID, gmlevel -> SecurityLevel
- add Comment field
- rename command .acc set gmlevel to .acc set seclevel

* Update auth database

* Fix primary key

* Temporary restore old command account set gmlevel with same handler as account set seclevel

Use Optional  for realmID - if not set, use -1 (for all realms)

* Rename 2020_XX_XX_00_auth.sql to 2020_06_20_00_auth.sql

* Update auth_database.sql

* Rename 2020_XX_XX_00_world.sql to 2020_06_20_06_world.sql

Co-authored-by: Giacomo Pozzoni <[email protected]>
(cherry picked from commit 8e0365d8a6ca5628ad17e6684743d9ab2138c068)
2020-06-22 11:03:31 +02:00
ForesterDev 7211c6e51d Scripts/Command: implement .debug play music command
Closes #19809

(cherry picked from commit dd4ff1fe5458c89fc1d988fcc6ba5792ee482dcf)
2020-06-14 23:49:04 +02:00
Chazy Chaz e21e7cd2e2 Scripts/Commands: Update reload commands names
(cherry picked from commit 4843544c217800ba56b3084a8b1ca2fcf62cb091)
2020-06-14 20:09:40 +02:00
ccrs 55576d20d8 Core/Creature: drop method SetPosition
eeeevil, use UpdatePosition. It was there just for old scripts compatibility.

(cherry picked from commit 17579f8d91e0dcc6990fe581de9ca51ed444b754)
2020-06-14 20:04:17 +02:00
Shauren c7306439e7 Core/Spells: Implement using different difficulty data from all spell related db2s, not just SpellEffect and SpellPower 2020-06-12 01:29:18 +02:00
Shauren df0a027444 Core/Misc: Ensure that query used for .reload creature_template command always matches the one used for loading during startup 2020-06-04 00:13:05 +02:00
Shauren eba31dea27 Core/Maps: Improvements to terrain swap handling
* Fixed memory leak when unloading grids
* Handle child maps being entered
* Allow chaining more child maps (Draenor -> Tanaan Jungle -> Tanaan Jungle - No Hubs Phase)
2020-05-24 22:34:25 +02:00
ariel- 93c19c4194 Core/Misc: camelize GetFaction/SetFaction properly
(cherry picked from commit 4c4dca6d694bd1064b403a31a5b1c776a326f3ce)
2020-04-29 01:36:41 +02:00
ccrs f135b7aea1 Core/Movement: 96f4c7c followup
(cherry picked from commit 9be7f5f57b897888983a9ca6f441479f3571513c)
2020-04-24 17:18:50 +02:00
Chaouki Dhib 5d076cfe29 Core/Spells: fix wrong distance calculations in AoE spells [Needs testing] (#16290)
Core/Spells: Fix wrong distance calculations in AoE spells.
Pull request #16290 by chaodhib.
God bless, finally.

(cherry picked from commit a1f2f30c145f6ad9c4baeffeff32618e71ff537c)
2020-04-24 17:18:49 +02:00
Shauren aced88b09b Core/AuctionHouse: After taking a break at the start of patch 8.3 auction house is now back in business. 2020-04-20 20:36:24 +02:00
Shauren c81de0eb4e Core/Misc: Removed old incorrect define 2020-04-04 00:28:49 +02:00
Shauren 70188c4fe1 nopch fix 2 2020-04-03 18:12:07 +02:00
Shauren ed7d4dd60f nopch fix 2020-04-03 18:02:00 +02:00
Shauren 3cc50e69f1 Core/Players: Fixed racemasks usage for new races 2020-03-30 19:06:11 +02:00
Shauren 90628b7d29 Core/DataStores: Updated db2 structures to 8.3.0 2020-02-17 23:58:47 +01:00
Shauren 93aa30f447 Core/Misc: Moved CanSpeak() method to WorldSession class 2020-02-07 20:11:27 +01:00
Shauren 4746331f49 Core/Misc: Removed references to item_template in logs 2020-01-25 14:15:20 +01:00
Aokromes b0bf1275ee New Year 2020-01-02 06:44:10 +01:00
Shauren 0a2d9ad2f7 Core/Items: Add ItemContext param to Item::Create function 2019-11-23 00:03:42 +01:00
Shauren c3a9d56b56 Core/DBLayer: Support using mysql 8 2019-11-01 16:21:14 +01:00
Shauren 3ac790287a Core/DataStores: Updated db2 structures to 8.2.5 2019-10-27 00:12:45 +02:00
Traesh 548d79bb06 Core/DataStores: Implemented WorldStateExpression 2019-08-24 17:13:17 +02:00
xinef1 60663d1374 Ensure that all actions are compared to fixed point in time (ie. world update start) (#18910)
- Actions will not be dependent on processing moment
- Increased GameObjects cooldown resolution to milliseconds, fixes arming time of traps to be exactly one second and not something from range (1000, 1999)
- Created GameTime namespace and UpdateTime class and moved there some code out of world

(cherrypicked from 7567cafec84080d26ea513242a1f540a823b8f9d)
2019-08-17 20:04:14 +02:00
funjoker b4d30bb92c QueryCache port
partial port of:
(ae9d01a3245c59a8a8d50516a79b79250337450d)
(dd1aa64563bfb726e1132a135927a02fbb765454)
2019-08-17 20:04:14 +02:00
Shauren f6e2b8cdc1 Core/DBLayer: Prevent committing transactions started on a different database 2019-07-27 10:52:33 +02:00
Shauren e8e89f58fb Core/DBLayer: Prevent using prepared statements on wrong database 2019-07-27 01:00:37 +02:00
xinef1 ad4e63bae1 Core/Misc: Moved CharacterInfo out of world to separate class
Closes #19030

(cherrypicked from 59ce3d6c9bd82d55cbfa505bb945b71cab21a12f)
2019-07-21 21:06:54 +02:00
xinef1 fe63cd3dbb Core/Creatures: Various fixes for creatures, regarding combat conditions, despawning, and few others (#18998)
* Made some changes to kiting mechanics, simplified code and made taunt auras prolong combat no matter the distance from the spawn
Unified some creature despawning code, removed some brutal direct calls in scripts
Don't play death anim on forced despawn
Removed some redundant visibility changes on creature despawn
Fixed possible problem with pet initializing template info from difficulty greater than normal
Properly keep UNIT_FLAG_IN_COMBAT on UpdateEntry call
Moved RegenerateMana function to general Regenerate(Power) function
Fixed increased health regeneration from polymorph for pets
Implemented CREATURE_TYPE_FLAG_GHOST_VISIBLE, those creatures will be properly seen when player is dead also
Removed hackfix from Gaeriyan and Franclorn Forgewright, fixed properly
Simplified ForcedRespawnTime code in ForcedDespawn
Do not allow to assist unit while evading or when enemy is evading
Do not allow to attack other units when evading or when the unit is evading
Corrected distance checking code before creature is allowed to evade, should fix some common problems
Properly return summon position for summoned creatures as their respawn position
Properly stop all moving units on gossip hello, no matter their npc flags

(cherrypicked from e1f14215d86fc9f0cd041f0e87bf0a689c086329)
2019-07-21 21:06:54 +02:00
ariel- b742c87222 Core: add some missing Player Name normalization on input data
(cherrypicked from 6f9e8b6c9174249025562faf9ad4c56bbb642547)
2019-07-21 21:06:54 +02:00
xinef1 b485f3e673 Few small optimizations here and there (#18684)
Changes list:
- Added CharacterGuidByNameContainer which contains name -> guid unordered map (updated along CharacterInfo)
- Extended CharacterInfo structure with GuildId
- Extended CharacterInfo structure with ArenaTeamId[3], for all possible teams (2v2, 3v3, 5v5)
- Removed CHAR_SEL_GUID_BY_NAME and CHAR_SEL_CHAR_GUID_BY_NAME synchronous queries, name -> guid can be now retrieved in World::GetCharacterGuidByName
- Removed CHAR_SEL_GUID_RACE_ACC_BY_NAME synchronous query, guid can be retrieved by name and rest of the data can be retrieved by guid
- Removed CHAR_SEL_CHAR_LEVEL synchronous query, level can be retrieved by guid
- Changed CHAR_SEL_CHARACTER_ACTIONS_SPEC to asynchronous query, action bars are now loaded asynchronously
- Removed CHAR_SEL_CHARACTER_NAME_CLASS synchronous query, guid can be retrieved by name and rest of the data can be retrieved by guid
- Removed CHAR_SEL_PLAYER_ARENA_TEAMS and CHAR_SEL_ARENA_TEAM_ID_BY_PLAYER_GUID synchronous queries, arena teams are now stored in CharacterInfo
- Replaced synchronous db calls with CharacterInfo lookups
- Removed ObjectMgr::GetPlayerGUIDByName, as it used db query
- Replaced some unnecessary UpdateObjectVisibility() calls because they were either duplicated (called few lines above in other function) or it is enough to call DestroyForNearbyPlayers because object is being removed or should be invisible and DestroyForNearbyPlayers is faster
- Corrected typo in Player::DestroyForPlayer, only items in slots 0 to EQUIPMENT_SLOT_END are sent to other players
- Renamed Player::GetGuildIdFromDB to Player::GetGuildIdFromCharacterInfo and changed the function to use CharacterInfo structure
- Renamed Player::GetArenaTeamIdFromDB to Player::GetArenaTeamIdFromCharacterInfo and changed the function to use CharacterInfo structure
- Renamed Player::GetLevelFromDB to Player::GetLevelFromCharacterInfo and changed the function to use CharacterInfo structure
- Removed GameEventMgr::_questToEventLinks and associated functions, eventId is now stored in Quest class under _eventIdForQuest variable
- Changed some functions checking quest status to use other functions for quest status check instead of duplicating code
- Removed callback from add friend, because we can get the guid from appropriate storage, no need to make db query
- Removed callback from add ignore, because we can get the guid from appropriate storage, no need to make db query
- Added callback to unwrap wrapped items asynchronously
- Removed synchronous select in tutorials to check if we have any entries in db, if any entry exists in db, m_TutorialsChanged variable will have TUTORIALS_FLAG_LOADED_FROM_DB flag added and it is no longer necessary to query database

(cherrypicked from b955456008191e60b6bda1f22e3486a3792b08db)
2019-07-21 21:06:54 +02:00
Shauren 82c7b6c568 Core/Items: Drop item random property and suffix - all random stats must be given using bonus lists 2019-06-08 17:09:20 +02:00