Commit Graph
100 Commits
Author SHA1 Message Date
Treeston 90540d684b Core/Misc: Various dynspawn cleanup and refactors split off from pooling rewrite:
- Map::RemoveRespawnTime(SpawnObjectType, LowType, doRespawn) split into Map::Respawn and Map::RemoveRespawnTime, without the extra boolean
- Map::RemoveRespawnTime(RespawnInfo*) merged into Map::DeleteRespawnInfo(RespawnInfo*) and is now private
- Map::DeleteRespawnInfo(void) renamed to Map::UnloadAllRespawnInfos to properly describe what it does
- Map::ProcessRespawns now actually saves the delayed respawn time to DB if the respawn was delayed
- Map::AddRespawnInfo now takes const reference, and returns success as a boolean
- Map::AddRespawnInfo no longer offers an unused "replace" parameter
- Map::DeleteRespawnInfo no longer offers a variety of unused private overloads
- Map::SaveRespawnTime no longer offers a tantalizing writeDB parameter. Parameter is now called "startup" to properly describe what it does.
- Map::SaveRespawnInfoDB now takes RespawnInfo reference instead of all the various fields. Still public because compatibility mode. QQ.
- Map::GetWorldObjectBySpawnId sanitized
- Map::GetXRespawnTime methods sanitized to all go through Map::GetRespawnTime

----------

Core/DB: Unify `creature_respawn` and `gameobject_respawn` into a single `respawn` table
2019-08-18 12:47:10 +02:00
Treeston f9184f026b Entities/Unit: Nuke Map::ForceRespawn from orbit, with the following implications:
- .npc respawn no longer causes stupid things to happen (Fixes #23014)
- ::DeleteFromDB methods on Creature and GameObject rewritten to be as sensible as such a colossally stupid method can ever be. They're static now.
- .npc delete and .gobj delete ported to new argument handling, and rewritten as per above. They can no longer crash the server when used in instances, too. Yay for that.
- Adjusted various dusty cobwebbed hacks around the core (why does waypoint visualization use permanent spawns *shudder*) to still work too.
2019-08-18 12:12:09 +02:00
Treeston 83a25ce554 Entities/Creature: Some asserts are now LOG_ERRORs that block spawning. Fix a group spawning bug exposed by the CoS merge. Improve some command output.
# Conflicts:
#	src/server/game/Maps/Map.cpp
#	src/server/scripts/Commands/cs_list.cpp
2019-07-08 09:34:07 +02:00
Treeston 1f15fe5096 oops, now it builds (and a bonus refactor that annoyed me)
# Conflicts:
#	src/server/game/AI/SmartScripts/SmartAI.cpp
#	src/server/game/AI/SmartScripts/SmartAI.h
#	src/server/game/AI/SmartScripts/SmartScript.cpp
#	src/server/game/AI/SmartScripts/SmartScript.h
2019-04-26 18:56:31 +02:00
Treeston 99a2c24116 Scripts/SmartAI: Forward invoker to invoked action list actions. Also JustAppeared -> InitializeAI.
# Conflicts:
#	src/server/game/AI/SmartScripts/SmartScript.h
2019-04-26 18:51:19 +02:00
Treeston 7c025ee803 Core/AI: EscortAI init logic moved from JustAppeared to InitializeAI. There are no escort NPCs using compatibility mode anymore, so this is equivalent.
As a result, inheriting scripts calling Start in on-create hooks (like JustSummoned) will now work properly again.

Tagging #20310.

# Conflicts:
#	src/server/game/AI/ScriptedAI/ScriptedEscortAI.h
2019-04-26 18:49:47 +02:00
Treeston b7984e132c Core/Unit: Successfully (?) prevented the zombie apocalypse. Corpses can no longer gain HP. Closes #22409. 2018-09-15 11:04:09 +02:00
Treeston c843f2b7e2 Core/ChatCommands: Implement achievement link parsing 2018-09-09 15:05:25 +02:00
Treeston e97e4e4605 another build fix 2018-09-09 14:56:00 +02:00
Treeston 13f45991ea build fix for pedantic compilers 2018-09-09 14:55:46 +02:00
Treeston 76d8fdba9c Core/ChatCommands: Properly handle single-argument handlers (argument string discarded). Add special handling for on/off booleans. 2018-09-09 14:31:46 +02:00
Treeston dda4a2f8d7 Scripts/SmartAI: SMART_TARGET_INVOKER cleanup step 1. The core will now log errors on start-up if SMART_TARGET_INVOKER abuse is found, but will continue to load the scripts as deprecated for now.
Note that a lot of these scripts may either not currently work, not work reliably, or may be prone to breaking unexpectedly when core internals change. SMART_TARGET_INVOKER is undefined behavior on any event that doesn't directly specify its invoker.

(We are considering options for allowing INVOKER to make sense in timed action lists in a reliable fashion, so they are exempted at this time.)
2018-09-03 14:12:39 +02:00
Treeston 6420e84773 Core/Maps: Fix a crash when spawning a spawn group 2018-08-29 19:26:10 +02:00
Treeston 9e2c08cd2c Core/GameObject: Add getter for current Quat rotation 2018-08-29 19:19:31 +02:00
Treeston 836a607875 Core/Scripting: Delay zone script's OnCreatureCreate until the creature has been added to map stores 2018-08-29 19:13:07 +02:00
Treeston 08ea000c1b Core/Maps: Properly re-create map on login for ephemeral player saves. Because it bugged me to no end when testing anything ever. 2018-08-29 19:03:15 +02:00
Treeston 4d0031bbd3 Core/LFG: Order group members before creating LFG group (leader > tank > healer > dps). Closes #16244. 2018-08-22 21:32:52 +02:00
Treeston b7aa449463 DBError follow-ups:
* broadcast_text mismatch (6eb7f06) is now a _INFO since Aok isn't nearly as fast as fixing as he claimed.
* SmartAI invoker misuse (482328b and a3c85c8) are now blocking errors
2018-08-20 04:51:38 +02:00
Treeston 62f259e2c9 Startup/DB: Print errors on npc_text vs broadcast_text mismatches. 2018-08-20 04:29:47 +02:00
Treeston 8bb732b951 Scripts/Commands: Fix .quest complete to properly work with PvP kill quests. Closes #16321. 2018-08-15 13:37:41 +02:00
Treeston af82810be9 AI/SmartScripts: Replace SMART_ACTION_INVOKER_CAST with SMART_ACTION_SELF_CAST in action 85. SMART_ACTION_INVOKER_CAST moves to 134. 2018-08-11 01:30:34 +02:00
Treeston 41f2b0f026 AI/SmartScripts: Warn on startup for ACTION_INVOKER_CAST without invoker (same as invoker targets) 2018-08-07 13:17:29 +02:00
Treeston 64780d7b31 visibility range check, fac4700 follow-up 2018-07-29 19:04:21 +02:00
Treeston 6cb585aa96 Core/Maps: Continue updating creatures that own auras applied to players. Closes #22110. 2018-07-29 19:00:09 +02:00
Treeston fb6acb3415 visibility range check, fac4700 follow-up 2018-07-24 11:18:25 +02:00
Treeston c58246d981 Core/Maps: Continue updating creatures that own auras applied to players. Closes #22110. 2018-07-24 11:18:07 +02:00
Treeston 204145b3df Common/Containers: Eliminate a edge case that could potentially lead to object invalidation. 2018-07-23 14:01:25 +02:00
Treeston f441d36d78 Misc: Pass std::chrono types by value everywhere. 2018-07-23 13:53:13 +02:00
Treeston 60fd73b18c Core/AI: Add a new LeavingWorld AI hook 2018-06-26 14:54:25 +02:00
Treeston b09c808291 Scripts/Naxxramas: Fix an issue that could cause Sapphiron to stop using Drain 2018-03-12 12:21:37 +01:00
Treeston ca312ced05 DB/SpawnGroup: Reserve group IDs 52 through 56 for Culling of Stratholme rewrite 2018-02-24 13:12:13 +01:00
Treeston 54316a0b99 Scripts/CoT4: Stratholme Residents should no longer rudely interrupt Arthas by punching him in the face while he's giving a righteous sermon on his reasons for wiping them all out. 2018-02-16 01:25:38 +01:00
Treeston daa7c79f7e Revert "Scripts/ScarletEnclave: fix Massacre at Light's Point mine cart escort to work again (tag #20310)"
This reverts commit 6ff71dffbb774b8ea715053cd9223edc5c67bb0f.
2018-02-16 01:25:02 +01:00
Treeston c83d9d3a4b Scripts/AzjolNerub: Hadronox is a big spider mommy, and needs more room to pet her spider pets properly. Hopefully this'll reduce the number of evades happening during the encounter. Tag #20310. 2018-02-16 01:24:55 +01:00
Treeston 302599decd Scripts/ScarletEnclave: fix Massacre at Light's Point mine cart escort to work again (tag #20310) 2018-02-16 01:24:48 +01:00
Treeston 7c9b62eac8 DB/Quest: fix Territorial Trespass SmartScript to use proper target type (tag #20310) 2018-02-16 01:24:41 +01:00
Treeston 6363bc77b8 Game/AI: InvalidAIException internal cleanup 2018-02-10 12:08:24 +01:00
Treeston 7997bebf9e Scripts/AzjolNerub: Missing nullptr check in Hadronox. Closes #21258. 2018-01-21 12:55:37 +01:00
Treeston ae8616bd52 DB/Quest: Allow starting Amphitheater of Anguish (12932) without having completed The Champion's Call (12974) 2018-01-21 12:55:25 +01:00
Treeston 574ce3f3ae kologarn unit_flags2 for difficulty_entry 2018-01-14 07:07:54 +01:00
Treeston 6522040c5e Core/Unit: Abide UNIT_FLAG2_DISABLE_TURN on creatures. Add that flag to Kologarn (from sniff). Hi sirikfoll. 2018-01-14 07:07:20 +01:00
Treeston 381e3ac9e9 DB/Creature: Remove a stray CIVILIAN flag from Cabal Agent. Tagging #19998. 2018-01-03 04:37:06 +01:00
Treeston 0aa1c50b41 travis fix 2018-01-01 16:02:44 +01:00
Treeston 2dea942944 Core/Unit: For convenience, explicitly redirect CastSpell with nullptr as first argument to the Unit* overloads. No more ->CastSpell((Unit*)nullptr, ...) all over the place!
(cherry picked from commits c7896f31026d6bdee189226680705dd7965b2039 and 40c78cac4c430a97386b44b994ec85fbaeda8821)
2017-12-26 01:17:44 +01:00
Treeston d08f8bc39a some more cleanup (cbd025f follow-up) 2017-10-26 12:56:12 +02:00
Treeston 6d2bfac955 Core/Player: More cleanups to Player::UpdateZone, including correcting an oversight that was causing the last known zone id to not update when leaving map. Closes #20289 for real this time. 2017-09-10 15:42:55 +02:00
Treeston 46657cca71 Core/Player: Update map zone stats BEFORE invoking scripts. Fixes a crash with zone change scripts that invoke another zone change. Closes #20289. 2017-09-10 15:34:30 +02:00
Treeston 46565118b3 Core/Player: Prevent changing equipment while charmed. Closes #20209. 2017-09-10 15:30:11 +02:00
Treeston 244e9c6a15 Core/Creature: Fix an oversight in Creature::SelectVictim that was causing creatures to evade when chased by another creature from outside their own aggro range. Closes #19998. 2017-09-10 15:24:38 +02:00
Treeston 867ca8817f Core/Unit: Don't apply liquid effects to game masters. 2017-08-03 19:39:45 +02:00
Treeston 584a302f3c Scripts/IcecrownCitadel: Prevent players from becoming inaccessible when killed by Lord Marrowgar's Impale spell (the initial damage, not the DoT). Also fix the underlying bug in vehicle logic. 2017-07-27 16:46:47 +02:00
treeston d73970fcb5 Scripts/Item: Change Nitro -> Boosts <- to use the correct knockup effect for their backfire. Also, script that knockup effect to work properly ("usually" deploy a rescue parachute). 2017-07-18 18:34:57 +02:00
Treeston e4841c960b Core/Quest: Prevent an issue causing quests to become invisible upon relog. (#20030)
Closes #20012
2017-07-16 14:38:37 +02:00
treeston 6deabff867 Formation idle: Remove more shitty code. Fixes #19995 for real this time. 2017-07-06 20:46:58 +02:00
Treeston da00217d31 Utilities/Containers: New RandomResize implementation with guaranteed asymptotic linear time for all container types (#19974) 2017-07-06 20:46:45 +02:00
treeston 794ea8c406 Fix formation follow. Closes #19995. 2017-07-06 20:46:40 +02:00
treeston af36d491a1 Fix an overly strict check that was causing guardians to evade loop. Also make players properly enter combat when their pets are engaged by a creature. 2017-06-20 03:55:07 +02:00
treeston 46f98b64c3 Rename .debug uws to .debug worldstate (clarity change). 2017-06-17 11:42:23 +02:00
treeston 4cd2ff6ae4 Fixes to all-reputation and all-skill custom option handling:
- Move on-create customs (all explored, all reputations) to CharacterHandler::HandlePlayerLogin for first login.

- Add Wrath and cata factions to all reputations custom (it only had BC factions).

- Remove unused ReputationMgr::SendStates. Add ReputationMgr::SendState handling for sending all updated states in arbitrary order if nullptr is passed (used in point 1).

- Fix all weapon skills max custom to properly apply on learning new weapon skills.
2017-06-15 08:08:49 +02:00
treeston 5812c6559f build fix 2017-06-15 07:49:57 +02:00
treeston f3aeaf990e dynamic_spawning conflict avoidance, part deux: World.h enums 2017-06-12 18:27:39 +02:00
treeston d33f462200 Removed a now-unused local (ca02629 follow-up) 2017-06-12 18:00:28 +02:00
treeston e20bc3d4bf Added new BoundaryUnionBoundary subclass of AreaBoundary, which does what it says on the tin. Hi, sirikfoll. 2017-06-11 17:49:35 +02:00
treeston a17af751bc Reserve RBAC permission entries 856-860 for dynamic_spawning branch to minimize future conflicts. 2017-06-09 13:30:15 +02:00
treeston 4b073c7354 Fixed a potential crash when resuming a SplineChainMovementGenerator. 2017-06-09 13:22:32 +02:00
treeston 2b721ca16c SAI fixes follow-up: I missed one. 2017-06-06 22:22:01 +02:00
treeston 3cc2419c2f Fix a whole set of possible infinite loop crashes in SAI (events triggering themselves even with cooldown set). 2017-06-06 22:14:22 +02:00
treeston 24c89fba76 Re-check target evade state on projectile impact and adjust accordingly. This fixes the incorrect message ("Absorb" instead of "Evade"), and also removes the root cause of the original evade follow bug (that was prevented in 1945874). 2017-06-06 19:32:18 +02:00
treeston a6b393c2af clang is dumb 2017-06-06 07:49:31 +02:00
treeston 68c500f020 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. 2017-06-06 07:49:02 +02:00
treeston aef568cdd1 Fix an issue where CanSpawn would never get invoked on creatures without per-guid script. 2017-05-31 16:10:04 +02:00
treeston a83b77485a Add another helper to ScriptedGossip.h for resolving listId -> action. 2017-05-31 16:09:56 +02:00
Treeston 16e60ba408 Partial revert of 15a207f, which was causing issues (ref #4943 and #19768). Instead, fix the underlying issue from 15a207f one level further down - Unit::getAttackerForHelper() shouldn't return units that we aren't in combat with (victim can be such a unit for players/player pets, which can startattack from a distance without entering combat). (#19814)
Fixes the following issues:
- Player pets would aggro neutral mobs as soon as they start autocasting (Imp's Firebolt) if they're in react range (due to victim != null, autocast counts as autoattack and sets victim)
- Neutral mobs would randomly evade when aggro switched between targets.

Closes #19768, #19485 and #10921.

(from PR #19814)
2017-05-30 09:21:38 +02:00
Treeston e80602f048 Fix evade issues when a spell hits the target just before evading. (#19815)
- Creatures should no longer get stuck in evade mode following a target if a spell hits the creature just as it's entering evade mode.
- Fixes and closes #4943. Finally.
2017-05-30 09:20:49 +02:00
treeston e361682377 Quickfix a bug introduced by 2f19d97 which prevented GTAoE from being cast. 2017-05-28 03:18:35 +02:00
treeston 3fa862ab38 Instances/Ulduar: Fix a super edge case bug where Algalon would evade if his tank successfully tanked a Cosmic Smash and got knocked up. Shadow priests everywhere rejoiced. 2017-05-28 03:18:18 +02:00
treeston 8d06064897 Core/Creature: Fix SetSpawnHealth so it cooperates with the colossal hack that is Battleground::AddCreature. *puke* 2017-03-03 01:21:26 +01:00
treeston f1681c75b1 Core/Creature: Prevent boss creatures from ever respawning naturally. 2017-02-10 05:25:45 +01:00
treeston c91f195554 Core/Creature: Correctly reset pathfinding capability on respawn. Prevents evade chains on some bosses. Closes #18188. 2016-11-03 16:14:09 +01:00
treeston 5d0a5951a1 Entities/Creature: Fix an edge case issue where creatures would re-acquire target after respawn if they despawned while spell focusing.
Instance/AzjolNerub: Fix Anub'arak wall and add sequence break info. Fixes and closes #18013.
2016-10-24 13:54:20 +02:00
treeston a9557382e8 Scripts/AzjolNerub: Make pulling Anub'arak a bit cleaner. 2016-10-24 13:45:33 +02:00
treeston e5f2fe7b7b Fix _DespawnAtEvade for other creatures to actually respawn said other creatures.
Also fix add aggro for Hadronox.
Fixes and closes #18012.
2016-10-24 13:45:01 +02:00
treeston 0ba8f4c955 Core/Creature: Fix respawn logic to call reset react state BEFORE calling Reset(). Fixes Krik'thir behavior after a wipe (and maybe some others).
Fixes and closes #18011.
2016-10-24 13:44:08 +02:00
treeston 824db91cbe Various: Fix coverity reported issues. 2016-10-05 07:59:14 +02:00
treeston a142c7b2ae and you get a header, and everyone gets a header... 2016-09-27 13:02:59 +02:00
treeston 0b2b2641a0 .....hail PCH 2016-09-27 13:02:49 +02:00
treeston 0739185b29 ...for real this time (seriously - what happened to test builds before merging, Aok?) 2016-09-27 13:02:41 +02:00
treeston 31d71fda27 Fix nonPCH. 2016-09-27 13:02:32 +02:00
Treeston 6dd0f9a478 I think I got all of them this time
No idea how this one got past travis.
2016-09-27 13:02:25 +02:00
Treeston 69e4236146 Scripts/AzjolNerub: Full rewrite 2016-09-27 13:01:58 +02:00
treeston 80741d92ac Scripts/IcecrownCitadel: Fix an issue where Deathbringer Saurfang's exit door could get stuck in a closed state. Fixes and closes #15018. 2016-09-22 15:28:15 +02:00
treeston 8952a6a9c7 Movement/SplineChain: Fix a potential critical bug where resume info returned during an edge case could fail an assertion when used. 2016-09-22 03:10:39 +02:00
treeston 6045d3f33d d3214a0 follow-up for code style. 2016-09-22 03:10:28 +02:00
treeston 6b83a23408 Movement/SplineChain: Streamline the script workflow for resume info a bit, provide static method that does all the ugly pointer casts for you. Also prevent a nullptr dereference crash if scripts mishandle motionmaster, and canonize Chain == nullptr to signify "no resume info". 2016-09-22 03:10:17 +02:00
treeston 3d82e5771d Map/InstanceMap: Ease up on a somewhat overzealous error message regarding instance saves. 2016-09-22 03:10:06 +02:00
treeston 7eb89d3648 Core/Movement: Fix a DB spline chain overload I missed in 2170541 2016-09-21 05:26:27 +02:00
Treeston 3815b5bc06 Code style follow-up, I blame Notepad++. 2016-09-20 20:33:01 +02:00
treeston 8a402b9f6b Core/Unit: Standardize SetFacingTo and SetFacingToObject behavior while moving. Both now fail while moving unless arg2 bool is true 2016-09-20 20:28:45 +02:00
treeston bd109edce8 5952752 follow-up: Member declaration now matches order of usage. 2016-09-20 18:38:42 +02:00
treeston bd9dbabcc0 Instance/Naxxramas: Loatheb no longer instantly murders you. Five spam casts of Doom tend to do that to raids. 2016-09-20 18:37:58 +02:00