Commit Graph

4047 Commits

Author SHA1 Message Date
Shauren
5c1fc5e387 Core/Pets: Pet management refactoring (#25191)
* Core/Pets: Pet management refactoring

* Preload basic pet data on character login with async query
* Load additional pet data (declined names/auras/spells/cooldowns) using async query after we are sure pet loading will succeed
* Remove all select queries related to pet stable/unstable
* Remove all silent pet deletions except explicit UI-triggered abandons
* Fixed displaying stable master content when current pet is not summoned
* Allow to stable/swap unsummoned current pet

Closes #3610
Closes #21266
2020-08-16 21:39:25 +02:00
Peter Keresztes Schmidt
6c7837f947 Core/Unit: Make HandleEmoteCommand typesafe (#25249)
* Scripts/ScarletMonastery: Fix wrong emote during Headless Horseman encounter

* Scripts/HoR: Fix wrong emote during escape event

* Core/Unit: Make improve type safety of HandleEmoteCommand

Change argument type to the expected enum type Emote

* Scripts/CoS: Use SetUInt32Value to set UNIT_NPC_EMOTESTATE

UNIT_NPC_EMOTESTATE is no flag field
2020-08-15 15:29:43 +02:00
Peter Keresztes Schmidt
87211d9f4d Core/PacketIO: Update SMSG_QUESTGIVER_QUEST_DETAILS (#25232)
* Core/PacketIO: Update SMSG_QUESTGIVER_QUEST_DETAILS

* Core/PacketIO: Name RewardFactionFlags field of QuestInfo struct
2020-08-15 13:25:23 +02:00
Ovah
764f22fc91 Core/Units: add new functionality for units to block or enable combat interactions (#25168)
* Core/Units: add new functionality for units to block or enable combat entirely via helper to reflect what CREATURE_DIFFICULTYFLAGS_IGNORE_COMBAT and client AI functions imply

* yeah...

* Nuke Creature::IsCombatDisallowed helper as its unused by now

* no combat extra flag may now be changed on transforms if the transformed entry does not have the flag
2020-08-07 14:51:40 +02:00
jackpoz
3c28573d02 Core/Misc: Code cleanup 2020-08-06 22:04:46 +02:00
Jinnaix
db9072a183 Core/Unit: Creatures' minions now engage in combat if their controller is attacked (PR #25219)
Closes #24340
2020-08-06 20:03:09 +02:00
Treeston
629908172f Core/Object: Deduplicate some checks 2020-08-06 19:46:33 +02:00
Giacomo Pozzoni
07fd84b679 Core/Misc: Fix static analysis issues (#25194) 2020-08-04 11:36:47 +02:00
Carbenium
228696bf80 Core/Common: Merge TimeTrackerSmall with TimeTracker 2020-08-01 12:43:55 +02:00
Shauren
06f59caf3d Core/DataStores: Rename TalentTabEntry::CategoryEnumID back to PetTalentMask 2020-07-31 20:02:08 +02:00
Shauren
57eaab80d9 Core/Mail: Load mails at login instead of on demand when queried by packets (logging in always sends one of the packets that cause mail loading anyway) 2020-07-30 20:38:04 +02:00
Shauren
e94350fcc3 Core/Mail: Refactor mail loading to execute 2 database queries instead of 1+mails.size() 2020-07-30 19:50:24 +02:00
Shauren
2f0893d279 Core/Misc: Replace database query in WorldSession::HandleAddFriendOpcode with async version 2020-07-30 17:41:20 +02:00
Gildor
586c00fe2e Core/Loot: Prevent loot already looted item (#25084) 2020-07-29 13:29:39 +02:00
Carbenium
8642aaaf92 Core/WorldObject: Replace non-std::chrono SummonGameObject overloads
Also fix intended despawn time of GOs used by the "Engineering a Disaster" quest
2020-07-27 23:00:51 +02:00
Carbenium
3620b47c41 Core/WorldObject: Replace non-std::chrono SummonTrigger overloads 2020-07-27 14:58:18 +02:00
Carbenium
a41f599be7 Core/WorldObject: Remove non-std::chrono SummonCreature overload
Remove
TempSummon* SummonCreature(uint32 entry, Position const& pos, TempSummonType despawnType = TEMPSUMMON_MANUAL_DESPAWN, uint32 despawnTime = 0, uint32 vehId = 0, uint32 spellId = 0);
2020-07-27 14:53:25 +02:00
Carbenium
480dee3125 Core/Creature: Remove non-std::chrono overload of DespawnOrUnsummon 2020-07-27 13:37:18 +02:00
Carbenium
92a02a5c87 Core/EventProcessor: std::chrono-ify CalculateTime
uint64 CalculateTime(uint64 t_offset) has been replaced with Milliseconds CalculateTime(Milliseconds t_offset).
Also add the std::chrono-ified overload void AddEvent(BasicEvent*, Milliseconds, bool)
2020-07-27 13:36:25 +02:00
Carbenium
1131229ee9 Core/WorldObject: Partially std::chrono-ify SummonCreature overloads
TempSummon* SummonCreature(uint32 entry, float x, float y, float z, float o = 0, TempSummonType despawnType = TEMPSUMMON_MANUAL_DESPAWN, uint32 despawnTime = 0);
to
TempSummon* SummonCreature(uint32 entry, float x, float y, float z, float o = 0, TempSummonType despawnType = TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime = 0s);
2020-07-26 23:30:32 +02:00
Carbenium
c39eb9b504 Core/Misc: Use std::chrono overload of Creature::DespawnOrUnsummon 2020-07-26 22:17:36 +02:00
Giacomo Pozzoni
6440c3bcac Core/Combat: Disable triggers entering combat (#25086)
* Core/Combat: Disable triggers entering combat

* Move check to database flags_extra flag in creature_template with value 0x00002000

* Fix Rotface puddle stalker too

* Rename 9999_99_99_99_world.sql to 2020_07_22_00_world.sql
2020-07-22 19:32:29 +02:00
Shauren
0b616e4865 Core/Players: Use original proc target to update weapon skills, fixes ranged weapon skill gains 2020-07-20 17:42:16 +02:00
Peter Keresztes Schmidt
e6e5775be8 Build: Enable -Wimplicit-fallthrough on clang (#25056)
* Misc: Use [[fallthrough]] attribute instead of comment to mark intentional fallthroughs

Related: #25006

* Misc: Add some missing breaks (no-ops) to satisfy clang

Related: #25006
Closes #25055

* Build: Enable -Wimplicit-fallthrough on clang

Closes #25006
2020-07-18 20:43:16 +02:00
Peter Keresztes Schmidt
85b5b842ca Misc: Use [[fallthrough]] attribute instead of comment to mark intentional fallthroughs (#25054)
Related: #25006
2020-07-18 20:42:28 +02:00
Treeston
896b68d5c2 Core/Time: Rename GetGameTime{System, Steady}Point methods
The names are a bit unhandy. Rename them (shorter but still meaningful).

GetGameTimeSystemPoint() -> GetSystemTime()
GetGameTimeSteadyPoint() -> Now()

Also add 2 new typedefs:

typedef std::chrono::steady_clock::time_point TimePoint;
typedef std::chrono::system_clock::time_point SystemTimePoint;

Closes #25042
2020-07-17 17:05:55 +02:00
Peter Keresztes Schmidt
202fd41389 Core/Misc: Replace boost::optional with std::optional (#25047)
C++17 is already mandatory, so it's a safe thing to do
2020-07-15 10:22:29 +02:00
NoName
9fe6756cf2 Core/PacketIO: Updated corpse related packet structures (#24922)
# Conflicts:
#	src/server/game/Entities/Player/Player.cpp
#	src/server/game/Handlers/MiscHandler.cpp
#	src/server/game/Handlers/QueryHandler.cpp
#	src/server/game/Maps/MapManager.cpp
#	src/server/game/Server/Packets/MiscPackets.cpp
#	src/server/game/Server/Packets/QueryPackets.h
#	src/server/game/Server/Protocol/Opcodes.cpp
#	src/server/game/Server/Protocol/Opcodes.h
#	src/server/game/Server/WorldSession.h

* + For SMSG_DEATH_RELEASE_LOC
G3D::Vector3 -> TaggedPosition<Position::XYZ>
+ removed non 3.3.5 packets

Co-authored-by: Peter Keresztes Schmidt <carbenium@outlook.com>
Co-authored-by: Mogadischu <cgnad@live.de>
Co-authored-by: Shauren <shauren.trinity@gmail.com>
2020-07-14 23:15:33 +02:00
Giacomo Pozzoni
203573db83 Core/Spells: Implement SPELL_EFFECT_ACTIVATE_OBJECT. (#23) (#24997)
* Core/Spells: Implement SPELL_EFFECT_ACTIVATE_OBJECT. (#23)

Original research by @xvwyh.

# Conflicts:
#	src/server/game/DataStores/DBCStores.cpp
#	src/server/game/DataStores/DBCStructure.h
#	src/server/game/DataStores/DBCfmt.h
#	src/server/game/Entities/GameObject/GameObject.h
#	src/server/game/Entities/GameObject/GameObjectData.h
#	src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
#	src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp

* Add missing sql update

* Fix some build errors

* Remove unused enum values

* Change artkits from 0-4 to 0-3

* Remove unused code

* Code review feedback

* Fix sql

* Remove artkit4 special case handling

* Default initialize artKits

* Code review feedback

* Split sql into structure and data files

Co-authored-by: Warpten <vertozor@gmail.com>
2020-07-14 09:34:03 +02:00
Shauren
e2ec3df27e Add missing breaks 2020-07-13 18:15:09 +02:00
Peter Keresztes Schmidt
10be49bdfe Fix some compiler warnings reported by GCC (#25007)
* Core/AI: Remove unneeded null checks

GetMap() can never return NULL.

Fixes additionally -Wunused-variable warnings
reported by GCC.

* Core/GameObject: Fix a -Wunused-variable warning reported by GCC

* Core/Player: Fix a -Wunused-variable warning reported by GCC

* Scritps/CavernsOfTime: Fix -Wimplicit-fallthrough warnings reported by GCC

* Scritps/CavernsOfTime: Fix a -Wmaybe-uninitialized warning reported by GCC

Warning:

/home/peterke/DEV/TrinityCore/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp: In member function ‘virtual void npc_arthas_stratholme::npc_arthas_stratholmeAI::UpdateAI(uint32)’:
/home/peterke/DEV/TrinityCore/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp:1119:58: warning: ‘emote’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 1119 |                                 (*it)->HandleEmoteCommand(emote);
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~

* Scritps/PitOfSaron: Fix -Wunused-variable warnings reported by GCC

* Scritps/EyeOfEternity: Fix a -Wclass-memaccess warning reported by GCC

Warning:

/home/peterke/DEV/TrinityCore/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp: In member function ‘virtual void boss_malygos::boss_malygosAI::UpdateAI(uint32)’:
/home/peterke/DEV/TrinityCore/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp:950:81: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘class ObjectGuid’; use assignment or value-initialization instead [-Wclass-memaccess]
  950 |                             memset(_surgeTargetGUID, 0, sizeof(_surgeTargetGUID));
      |

* Scritps/CoilfangReservoir: Fix a -Wclass-memaccess warning reported by GCC

Warning:

/home/peterke/DEV/TrinityCore/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp: In member function ‘void boss_leotheras_the_blind::boss_leotheras_the_blindAI::Initialize()’:
/home/peterke/DEV/TrinityCore/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp:220:55: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘class ObjectGuid’; use assignment or value-initialization instead [-Wclass-memaccess]
  220 |             memset(InnderDemon, 0, sizeof(InnderDemon));
      |                                                       ^

* Scritps/Naxx: Fix a -Wimplicit-fallthrough warning reported by GCC

For discussion see https://github.com/TrinityCore/TrinityCore/pull/25007
2020-07-13 16:35:31 +02:00
Peter Keresztes Schmidt
c92950b3e1 Core/DataStores: Update DBC field names to generated ones (#24999) 2020-07-12 15:36:55 +02:00
Max Drosdo.www
3529442668 Core/Player: Introduce separate level caps for each expansion (#24989) 2020-07-11 11:10:04 +02:00
jackpoz
b4adaa838c Core/Creature: Add null check for charmed creatures 2020-07-09 22:12:18 +02:00
Max Drosdo.www
e20e51a385 Core/Unit: Prevent gaining weapon and defense skillups in pvp (#24895) 2020-07-06 18:34:42 +02:00
Gildor
2a5f537d6a Core/Gameobjects: Improve IsValidAttackTarget faction check for traps that hasn't owner or have NPC owner (#24931) 2020-07-04 15:58:41 +02:00
Gildor
4a4aac61d5 Core/Gameobjects: Traps shouldn't ignore IsImmuneToNPC/IsImmuneToPC and IsInSanctuary rules if has owner (#24911) 2020-07-01 22:53:28 +02:00
Rothend
193408f335 Core/Players: properly scale current value of hidden skills with player level (#24886)
Closes #20979
Closes #24801
2020-06-30 16:39:12 +02:00
Giacomo Pozzoni
cc71da35b5 Core/Spells: implement corpse target type support and properly fix resurrections (#24921)
* Core/Spells: implement corpse target type support and properly fix resurrections

(cherry picked from commit df193945d9)

# Conflicts:
#	src/server/game/Spells/Spell.cpp
#	src/server/game/Spells/Spell.h

* Core/Spells: implement TARGET_CORPSE_SRC_AREA_RAID and updated remaining resurrection effect handlers for updated corpse targeting

(cherry picked from commit 98b075cb4b)

# Conflicts:
#	src/server/game/Miscellaneous/SharedDefines.h
#	src/server/game/Spells/Spell.cpp
#	src/server/game/Spells/SpellEffects.cpp
#	src/server/game/Spells/SpellInfo.cpp

* Fix no-pch

Co-authored-by: Ovahlord <dreadkiller@gmx.de>
2020-06-29 23:03:03 +02:00
Shauren
0468c70dfe Core/Maps: Implemented getting area id from gameobject spawns
Yes, you can now spawn LK platform anywhere and it will treat you as inside Icecrown Citadel

(cherry picked from commit 42f9deb21e)
2020-06-27 20:23:30 +02:00
jackpoz
49da3533cd Core/Common: Add macro ASSERT_WITH_SIDE_EFFECTS to be used when asserting conditions that have side effects 2020-06-26 23:21:49 +02:00
Rothend
e3bac11837 Core/Player: do not consider FLAG_EXTRA_NO_XP_AT_KILL or pet status when deciding if a creature counts as a "gives experience or honor" target. (#24884)
Closes #23860
2020-06-24 21:41:01 +02:00
Carbenium
f7faf20254 Battlefields: Move BF scripts out of game
This commit introduces the usual script interface
for battlefields.
2020-06-24 15:09:57 +02:00
Carbenium
7b3d691c0b Entities/WorldObject: Add IsInWorldPvpZone to keep API similar to master 2020-06-24 15:09:57 +02:00
Carbenium
22c12e7123 Core/Misc: Move WorldState enum to SharedDefines
Move WG battlefield world states to the global enum
2020-06-24 15:09:57 +02:00
Carbenium
6a8c12587e Core/Misc: Create new enum for AreaIds
Move Wintergrasp BF related values there
2020-06-24 15:09:57 +02:00
Peter Keresztes Schmidt
b210bb3713 Core/Misc: Replace Trinity::make_unique with std (#24869)
(cherry picked from commit bab5fd87a3)
2020-06-23 18:03:16 +02:00
Gildor
18692ad20c Core/Unit: SPELL_INTERRUPT_FLAG_ABORT_ON_DMG should only affect player spells (#24836) 2020-06-19 22:56:46 +02:00
Ovahlord
c50bb00ac7 Core/Players: do not update position data on character creation
Retail does not have a zone id for newly created character until their first login so we do the same as well. This will drastically improve performance on character creations as we no longer unnecessarily load grids and map data.
2020-06-18 05:23:25 +02:00
Keader
d81a9e5bc3 Core/Misc: Fixed resistance calculate for Mutated Transformation and Twilight Bloodbolt (#24717)
Ref: 9f7b464a6a
- Implemented a new SpellScript hook that allow control Resistance/Absorb amount of a damage spell.
2020-06-03 22:05:08 -03:00