Commit Graph
602 Commits
Author SHA1 Message Date
Aokromes 3621482e44 kill some whitespaces
(cherry picked from commit cc49b7bb3024c6eb36d9bbbe7b151d7ae9ba91b7)
2021-10-26 23:55:38 +02:00
Treeston 26ca7b0fc2 Core/Creature: Get rid of a few Creature::getAttackerForHelper misuses. That's not what the function does, folks.
(cherry picked from commit 71c5569d186c4c24382b7c2846630da4a9edfb4f)
2021-10-26 23:51:12 +02:00
Treeston d57e74b3b5 Core/Scripting: Delay zone script's OnCreatureCreate until the creature has been added to map stores
(cherry picked from commit b4a1887c4d8df5a7729ed5c4126f6a7655a02127)
2021-10-23 14:53:14 +02:00
Treeston 392a644dc8 Core/Threat: Threat system adjustments:
* Online states are now re-evaluated before victim update instead of continuously. Closes #22226. Tagging #21501.
* Victim update now happens every 1s as opposed to every server tick unless current target goes away.
* Suppressed threat is no longer re-established until the victim gains additional threat (by hitting the target, for instance).
* Assistance threat is now split between non-controlled units threatened by target, as opposed to all units threatened by target.

(cherry picked from commit 5cea572a9ad524c6f28ff8519bee61d1ff4357d0)
2021-10-23 02:14:04 +02:00
Shauren ab95c5e9d7 Core/Creatures: Restored old initialization order: AI after movement
Closes #22307

(cherry picked from commit cdf4040f4fce4f1e5ebb33525c4618845605081c)
2021-10-22 23:51:59 +02:00
Treeston e4e8c1c59c Core/AI: Clean up charm AI handling, we now have two unique_ptr instead of a crapton of booleans
(cherry picked from commit 042f5515e4f3e52b0d2e23d9b9e147041849ce12)
2021-10-22 23:47:51 +02:00
Treeston 6a91fe3fbe Core/Creature: Fall back to combat list if calling for help without threat list
(cherry picked from commit 0e4a49b0a4c86eb4a2d0d128e24bc8aaabb47e31)
2021-10-22 23:21:01 +02:00
Treeston 6b8329f6af Core/Creature: Some adjustments to Creature::CallForHelp. Now works even if the Creature hasn't selected a victim yet.
(cherry picked from commit 79f0e55dcbe4a978363b4216188dd45e77512d1c)
2021-10-22 23:17:41 +02:00
jackpoz b6f28a7ebc Core/Packets: Reduce memory footprint of cached queries (#22297)
Ensure only the minimum required memory is used by caching query packets by calling shrink_to_fit()

(cherry picked from commit deabd4ab453ee8cf1f515bdb32bf9cf9de7f0591)
2021-10-22 23:15:27 +02:00
Treeston 3418a33a87 Misc: Pass std::chrono types by value everywhere.
(cherry picked from commit 2ef9d301f0869b443122e2ba543af054c5b0e53c)
2021-10-14 19:39:42 +02:00
Meji 0cfd14d2a0 Core/BattlePets: Misc fixes (#26990)
* Define BattlePetBreedQuality enum class.
* Check the quality of the battle pet species in battle_pet_quality table to avoid invalid values.
* Set CurrentBattlePetBreedQuality and WildBattlePetLevel update fields with the data of the summoned battle pet.
* Added function to calculate the WildBattlePetLevel of wild battle pets according to their spawn zone.
2021-10-03 21:20:45 +02:00
ccrs 426f9f2f92 Core/Movement: MotionMaster reimplementation (#21888)
Internal structure and handling changes, nothing behavioural (or thats the intention at least).

(cherry picked from commit 982643cd96790ffc54e7a3e507469649f3b074d2)
2021-09-28 00:15:13 +02:00
Treeston f1ac141f25 Core/Unit: UNIT_FLAG renames
[UNIT_FLAG_PLAYER_CONTROLLED -> UNIT_FLAG_POSSESSED]
[UNIT_FLAG_PVP_ATTACKABLE -> UNIT_FLAG_PLAYER_CONTROLLED]
Signed off by: Shauren, Warlockbugs.

(cherry picked from commit 081eab3cf5a5ec42917b2a7eaebf816fb36da423)
2021-09-26 16:07:09 +02:00
Shauren 5274f7af17 Core/PacketIO: Added missing move assignment operator to ByteBuffer
(cherry picked from commit fcb1e3e6424ef86934132e1111052a6798d78bc9)
2021-09-26 01:27:59 +02:00
ariel- a54e5bf4c8 Core/Creatures: Minor HasSpell method cleanup
Cherry-picked improved from 5734788c02

(cherry picked from commit 3670779e8eb07c05f77e61e09486d85d7210e4ed)
2021-09-19 22:40:38 +02:00
Shauren 8a4e1119ac Core/Spells: Unify spell effect access api in both branches 2021-09-04 15:13:15 +02:00
ariel- 962f6d7988 Core/Spells: rework part 5: GameObject casting
Closes #21330
Closes #18885
Ref #18752

(cherry picked from commit 45c5e1b9d63796d168339a44f63418f220cf2403)
2021-08-28 15:59:11 +02:00
Shauren a91edcb952 Core/Creatures: Remove hover on death
(cherry picked from commit 241109327bf573460d488d707d7eb19f82f1350c)
2021-08-24 13:45:34 +02:00
Shauren f8c03a9066 Core/Creatures: Reworked setting move types in database
* Each move type has its own field instead of trying to combine everything in InhabitType
* Allow overriding movement separately for each spawn

(cherry picked from commit 592516ae69d89da3bcb0ede144644a3d2e0186e0)
2021-08-24 13:43:06 +02:00
Shauren 2e2b298618 Core/Movement: Fixed creature hover
Closes #15177

(cherry picked from commit 2baa81065ba27f0a6d278a8dd8a79b7c831e0a2b)
2021-08-24 12:44:38 +02:00
Treeston 4b93059ec7 Core/Creature: Temporarily let Creatures violate dynspawn assumptions for pooled creatures. This should fix startup crashes until I can investigate and find a long-term fix. Tag #21519.
(cherry picked from commit 9fc6b13027d2d66a99b6bee49d3add23f2c0c8af)
2021-08-08 21:21:34 +02:00
Treeston 8757a80767 Core/Creature: Add another aggressive compatibility mode assertion to catch faulty dynspawn code.
(cherry picked from commit 3eab2d7efcc225696fe32f94687fd8e7b6755a2a)
2021-08-08 21:21:34 +02:00
Treeston 5c80f50734 Core/Spawning: Actually check spawn group state before processing a respawn. It feels like that is something that should've been noticed at some point.
Also remove CreatureScript::CanSpawn since nobody uses it, and spawn groups do the same thing.

(cherry picked from commit 94b5d9bfa1195ad7c32cf51a665b55514dac0938)
2021-08-08 21:21:34 +02:00
ariel- 70c26d53cb Core/Entities: unit states cleanup
- Added new UNIT_STATE_FOCUSING for creature focus system, this will stop creatures adding/clearing the UNIT_STATE_CANNOT_TURN mask (eg UNIT_STATE_STUNNED if stunned while focusing a spell)
- Added UNIT_STATE_CHARMED that gets set/removed on any charm type (UNIT_STATE_POSSESSED is only for possess as it's name suggests)
- The new states are checked against mask to know whenever client needs to regain character control

Closes and fixes #21460

(cherry picked from commit ba27711145d1b015578aedb48ea8532b4f0bec75)
2021-08-08 21:21:34 +02:00
Shauren cd5357dc18 Core/PacketIO: 9.1.0 opcodes and packet structures 2021-08-08 00:18:05 +02:00
ariel- d91e099b10 Core/Spells: prevent creatures to focus channeled spells without SPELL_ATTR1_CHANNEL_TRACK_TARGET
- Creatures stuck here wouldn't try attacking because of this
- Remove one workaround in halion script, now it's unneeded

Ref #11311

(cherry picked from commit 29f7258dc824659cb2de81c5ff3b3b3853de2a8b)
2021-06-21 12:47:03 +02:00
Treeston 95fb6fe075 Core/Creature: Adjust SelectVictim behavior: (PR #21324)
- No more automatic combat -> threat promotion. This matches anecdotal retail behavior - spells already in transit will not cause mob to chase you if its primary target vanishes before the spell hits.
- Prevent mobbing by stopping creatures from auto-acquiring a nearby target just because the primary target vanished.

(cherry picked from commit 1acfefb973895b0e3df3c8d9b43b920d2a1b5392)
2021-06-19 01:35:41 +02:00
Treeston cb3a041482 Core/Creature: add an assertion to guard against infinite loops
(cherry picked from commit 320306554c2240c74d991f459e7bad5eef39ec5a)
2021-06-18 21:20:41 +02:00
ariel- c77925da4a Core/Entities: killed Creature::SetInCombatWithZone and replaced with AI version
Closes #12108 (again)

(cherry picked from commit 7c9722a4ae08b5f283f6a085a411e37604a7da9f)
2021-06-16 21:03:06 +02:00
ariel- 861cf261c5 Core/Formations: update codestyle and fix crash
Closes #21288

(cherry picked from commit 73cc613dc86d7d72d78f22affe2faba6786bccc5)
2021-06-16 19:26:32 +02:00
Treeston ac8ff49274 Core/Unit: Abide UNIT_FLAG2_DISABLE_TURN on creatures. Add that flag to Kologarn (from sniff). Hi sirikfoll.
(cherry picked from commit d9c772303cc17d98581cc52bb51116f640e23c08)
2021-05-17 00:36:06 +02:00
kelno 1206e815cd Core/Creature: improve DB linked_respawn handling (#21172)
* Fixed SetCreatureLinkedRespawn function possible erasing/replacing a GameObject link (instead of a creature one)

(cherry picked from commit 70eb18d0e58ecf0cfcda4f410a183c671fbafe5c)
2021-05-16 21:56:06 +02:00
Treeston c31ae7ab33 Core/Threat: Fix a potential exploit allowing players to damage a boss without them taking damage.
Scripts/Halion: General cleanup of old hacks no longer needed under new combat system.

(cherry picked from commit 9ad11e67fb6b410f18031ee68259866ea1354c8c)
2021-05-16 21:56:06 +02:00
Treeston 5aee452943 Core/Misc: A variety of clean-up changes, mostly following up on 532ab1c to fix legacy bugs exposed by it:
- Triggers can no longer have a threat list (this may expose some ugliness in old legacy scripts)
- Threat entries are forced to OFFLINE if the AI refuses to attack the target
- Clean up passive creature evade behavior to be more consistent
- Fix a months old issue in spawn group management that would cause "Inactive" to incorrectly show in .list respawns for system groups outside of map 0
- Valithria script cleanups, remove old hacks and make it work with the new system. Closes #21174.
- Some strings cleanup

(cherry picked from commit 9f9507e6a1fd50a5ce643a4096c1712700244a61)
2021-05-16 21:56:05 +02:00
Treeston 34c7810fe5 Core: Combat/threat system rewrite (PR #19930)
- PvE combat is now always mutual. UNIT_FLAG_IN_COMBAT is backed by actual references to the units we're in combat with.
- PvP combat is now also tracked, and almost always mutual; spells like Vanish and Feign Death can break this rule. That means we can easily determine a list of players we're fighting.
- By extension, IsInCombatWith now has sensible behavior when invoked on nonplayers.
- Threat and combat systems are no longer the same.
  - They still have an enforced relationship (threat implies combat - clearing combat clears threat)...
  - ...but we can have combat without threat. A creature (with threat list) isn't considered to be engaged until it has an entry on its threat list...
  - ...which means we can now faithfully replicate retail engage behavior. Combat on projectile launch - engagement start on projectile impact. Yay for progress!
- AI method refactor, as already ported in 6113b9d - `JustEngagedWith`, `JustEnteredCombat` and `JustExitedCombat`.
- Vehicle threat is now properly pooled on the main vehicle body (fixes #16542).
- Various edge case bug fixes for threat redirects (Misdirection "cancelling" Vigilance and similar).
- Target re-selection is now significantly faster.
- Fixed a ton of other smaller edge case bugs, probably.

Closes #7951 and #19998.

(cherry picked from commit 532ab1c7f8653d1a2e48aa1f1f8a9ba1041d4bb7)
2021-05-16 21:56:01 +02:00
Jeremy 446fc391f0 Core/Entities: Fix some weird movement due to los issues (#21125)
* Core/Entities: Fix some weird movement due to los issues
- Made LoS check use collisionHeight instead of midsection. Value was too low.
- Gnomes will now have a breath bar more quickly than for example a tauren.
- Changes have been made to checking for ground z as well, some tweeking might be needed but removed most of the scattered +2.0f/+0.5f/we
* Add 0.05f to isInAir check in Creature::UpdateMovementFlags

(cherry picked from commit e42903ec16f4849b71bc8736e3151a1e11d3cd25)
2021-04-15 05:53:27 +02:00
jackpoz e17e4e6f07 Core/Misc: Replace time(NULL) with GameTime::GetGameTime()
(cherry picked from commit 12701cb0c6c45eb105ad449eb9a56e76d84d691e)

 Conflicts:
	src/server/game/Achievements/AchievementMgr.cpp
	src/server/game/AuctionHouse/AuctionHouseMgr.cpp
	src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
	src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
	src/server/game/Battlefield/Battlefield.cpp
	src/server/game/Battlefield/Zones/BattlefieldWG.cpp
	src/server/game/Battlegrounds/BattlegroundMgr.cpp
	src/server/game/Calendar/CalendarMgr.h
	src/server/game/DungeonFinding/LFGQueue.cpp
	src/server/game/Entities/Corpse/Corpse.cpp
	src/server/game/Entities/Creature/Creature.cpp
	src/server/game/Entities/Item/Item.cpp
	src/server/game/Entities/Pet/Pet.cpp
	src/server/game/Entities/Player/Player.cpp
	src/server/game/Entities/Unit/Unit.cpp
	src/server/game/Globals/ObjectMgr.cpp
	src/server/game/Grids/ObjectGridLoader.cpp
	src/server/game/Guilds/Guild.cpp
	src/server/game/Handlers/AuctionHouseHandler.cpp
	src/server/game/Handlers/BattlefieldHandler.cpp
	src/server/game/Handlers/CalendarHandler.cpp
	src/server/game/Handlers/CharacterHandler.cpp
	src/server/game/Handlers/ChatHandler.cpp
	src/server/game/Handlers/LFGHandler.cpp
	src/server/game/Handlers/MailHandler.cpp
	src/server/game/Handlers/MiscHandler.cpp
	src/server/game/Handlers/MovementHandler.cpp
	src/server/game/Handlers/PetHandler.cpp
	src/server/game/Handlers/QueryHandler.cpp
	src/server/game/Handlers/TicketHandler.cpp
	src/server/game/Instances/InstanceSaveMgr.cpp
	src/server/game/Server/WorldSession.cpp
	src/server/game/Server/WorldSocket.cpp
	src/server/game/Spells/Auras/SpellAuras.cpp
	src/server/game/Tickets/TicketMgr.cpp
	src/server/game/Tickets/TicketMgr.h
	src/server/game/World/World.cpp
	src/server/scripts/Commands/cs_gobject.cpp
	src/server/scripts/Commands/cs_instance.cpp
	src/server/scripts/Commands/cs_list.cpp
	src/server/scripts/Northrend/zone_wintergrasp.cpp
	src/server/scripts/Spells/spell_item.cpp
2021-04-15 05:53:27 +02:00
ariel- e4ca95983b Core/Creatures: fixed school immunity unapply when updating entry and unified code
- Also use correct data type for SQL (INT <-> uint32)

(cherry picked from commit 00c0ec3f2784e67f4ccc7616bf65aa7e5496687a)
2021-04-15 05:53:27 +02:00
Wyreth ed3b34e33f Core/Creature: implement school immunity for creatures in creature_template (#20709)
(cherry picked from commit ae878e18ef121b7b1960f40f2b0f99debd2155d8)
2021-04-15 05:53:27 +02:00
ariel- 88ae43fa51 Core/Misc: minor typo and codestyle fixes
- Replace NULL uses in new code with nullptr
- Fix wrong (accumulated) load time log when loading calendar invites
- Make Creature::CanRegenerateHealth const as its just a getter
- Mark OnlyOnceAreaTriggerScript::OnTrigger as final in case someone wants to override that (you are supposed to use protected _OnTrigger hook)

(cherry picked from commit 78a1c687a25d91dd6b13251f28d03ec6a0a49b8a)
2021-03-15 20:17:31 +01:00
jackpoz a01d397c3d Core/Misc: Fix static analysis issues
Fix static analysis issues reported by 3rd party tools

(cherry picked from commit 24e82fe83d384e3a4cf17719e728760053516607)
2021-02-25 18:50:55 +01:00
Ovah 2a51edc5bc Core/Creatures: Implemented extra flag to use offhand attacks (#21008)
* Fixed initial offhand attack timer so the main and offhand attacks will now act blizzlike instead of getting executed at the same time

Note: since some creature equipment items cannot be identified as weapon since they are only visual items there is no way to detect this automaticly
(cherry picked from commit 869affa89300c24b85896a050b58241714786454)
2021-02-25 18:50:55 +01:00
ccrs 58de8141e5 Core/Creature: 2d1ef6b5b0 followup
closes #20532

(cherry picked from commit caefe2b43e20eef28689c94c230f00fb5e61af20)
2021-02-15 19:13:25 +01:00
ccrs 92026abee1 Scripts/World: update guard scripts
Also remove deprecated method from Creature

(cherry picked from commit 299323ce5d2e478f2eb7fcd6572c5fbf87b98c6e)
2021-02-15 19:13:25 +01:00
r00ty-tc f3ac10f36f Core/Spawn: Limit saved/stored respawn time.
- Limit to time_t maximum, for the compiled-for architecture.

Closes #20834

(cherry picked from commit 3446424540c5692c9e0ff11803d70e8129a5adc4)
2021-02-06 21:41:51 +01:00
ccrs bf12bae467 Core/Misc: waypoint movement
- Creature: update current waypoint to store nodeId and pathId
- MotionMaster: change variable type on GetMotionSlotType and GetMotionSlot to keep consistency and prevent errors (ASSERT is now no longer needed)
- UnitAI: add new waypoint hooks WaypointPathStarted and WaypointPathEnded
- SAI: handle WAYPOINT related events if creature is no escorting
* SMART_EVENT_WAYPOINT_RESUMED still not implemented for no escorting

TODO: the new hooks can save, now duplicated, logic on EscortAI and SAI

closes #20777
updates #20310
updates 21bd52cb99

(cherry picked from commit e10d7dd45cfc073c791cd5e5f3f964d14b37df3d)
2021-01-29 19:23:53 +01:00
Teppic1 0f837c0a02 Core/Creatures: Remove duplicate check for evade from Creature::CanAssistTo (#20722)
(cherry picked from commit 967dcc5dba0df965e4df19b5c6d02e4880dfce58)
2021-01-13 22:04:52 +01:00
r00ty-tc 7a21d02da1 Core/Maps: Prevent potential null dereference
- Coverity: 1381663

(cherry picked from commit 82a93e6be95af4419e001a7dbf109b416a109fb6)
2021-01-13 22:04:52 +01:00
Shauren 4ca29f3cb0 Core/Misc: First set of required db changes for 9.0 2020-12-08 18:16:46 +01:00
Shauren b231903932 Core/Misc: Port all the refactors sneaked in master to 3.3.5 include cleanup port 2020-09-04 13:38:24 +02:00