Commit Graph

430 Commits

Author SHA1 Message Date
Treeston 081eab3cf5 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.
2018-05-02 19:09:37 +02:00
Shauren fcb1e3e642 Core/PacketIO: Added missing move assignment operator to ByteBuffer 2018-04-19 17:35:57 +02:00
ariel- 3670779e8e Core/Creatures: Minor HasSpell method cleanup
Cherry-picked improved from 5734788c02
2018-03-19 17:29:13 -03:00
ariel- 45c5e1b9d6 Core/Spells: rework part 5: GameObject casting
Closes #21330
Closes #18885
Ref #18752
2018-03-09 14:41:28 -03:00
Shauren 241109327b Core/Creatures: Remove hover on death 2018-03-08 23:13:51 +01:00
Shauren 592516ae69 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
2018-03-08 23:13:51 +01:00
Shauren 2baa81065b Core/Movement: Fixed creature hover
Closes #15177
2018-03-08 23:13:51 +01:00
ariel- 6e0b9a7916 Core/Creatures: port power type updates from master branch
Core/Misc: Added helper function Unit::SetFullPower
Cherry-picked from 8199eef81c

Core/Creatures: Updated power type handling (#20981)
Cherry-picked from 16a7a414ab
2018-03-07 03:34:45 -03:00
Treeston 9fc6b13027 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. 2018-02-27 22:10:36 +01:00
Treeston 3eab2d7efc Core/Creature: Add another aggressive compatibility mode assertion to catch faulty dynspawn code. 2018-02-27 16:18:38 +01:00
Treeston 94b5d9bfa1 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.
2018-02-22 20:31:42 +01:00
ariel- ba27711145 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
2018-02-20 17:34:12 -03:00
ariel- 29f7258dc8 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
2018-02-15 17:50:15 -03:00
Shauren 713bf944ae Build fix 2018-02-05 21:08:09 +01:00
Shauren 2fd9dc2edb Core/Scripts: Fixed ENSURE_AI assertion failures when used in Reset()/InitializeAI() hooks with hotswap
Updates #20727
2018-02-05 20:52:19 +01:00
Treeston 1acfefb973 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.
2018-01-29 23:14:46 +01:00
Treeston 0ee14845ae typo 2018-01-28 02:41:33 +01:00
Treeston 320306554c Core/Creature: add an assertion to guard against infinite loops 2018-01-28 01:51:50 +01:00
ariel- 7c9722a4ae Core/Entities: killed Creature::SetInCombatWithZone and replaced with AI version
Closes #12108 (again)
2018-01-22 15:00:55 -03:00
ariel- 73cc613dc8 Core/Formations: update codestyle and fix crash
Closes #21288
2018-01-22 02:43:34 -03:00
ariel- f50a333418 Core/Misc: kill whitespace 2018-01-12 00:07:29 -03:00
Treeston d9c772303c Core/Unit: Abide UNIT_FLAG2_DISABLE_TURN on creatures. Add that flag to Kologarn (from sniff). Hi sirikfoll. 2018-01-10 00:19:00 +01:00
kelno 70eb18d0e5 Core/Creature: improve DB linked_respawn handling (#21172)
* Fixed SetCreatureLinkedRespawn function possible erasing/replacing a GameObject link (instead of a creature one)
2018-01-08 00:32:22 +01:00
Treeston 9ad11e67fb 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.
2018-01-07 20:32:30 +01:00
Treeston 9f9507e6a1 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
2018-01-04 04:46:41 +01:00
Treeston 532ab1c7f8 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.
2018-01-03 20:04:19 +01:00
tkrokli f6b6f57a6d Update copyright note for 2018
Best wishes for the new year.
2018-01-01 01:55:29 +01:00
Jeremy e42903ec16 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
2017-12-29 22:32:07 +01:00
jackpoz 12701cb0c6 Core/Misc: Replace time(NULL) with GameTime::GetGameTime() 2017-12-24 22:50:59 +01:00
ariel- 00c0ec3f27 Core/Creatures: fixed school immunity unapply when updating entry and unified code
- Also use correct data type for SQL (INT <-> uint32)
2017-12-18 10:59:47 -03:00
Wyreth ae878e18ef Core/Creature: implement school immunity for creatures in creature_template (#20709) 2017-12-17 16:29:22 +01:00
ariel- 78a1c687a2 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)
2017-12-13 14:43:12 -03:00
jackpoz 24e82fe83d Core/Misc: Fix static analysis issues
Fix static analysis issues reported by 3rd party tools
2017-12-08 23:27:30 +01:00
Ovah 869affa893 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
2017-12-07 17:41:11 +01:00
ccrs caefe2b43e Core/Creature: 2d1ef6b5b0 followup
closes #20532
2017-11-22 20:54:19 +01:00
ccrs 299323ce5d Scripts/World: update guard scripts
Also remove deprecated method from Creature
2017-11-22 20:11:22 +01:00
r00ty-tc 3446424540 Core/Spawn: Limit saved/stored respawn time.
- Limit to time_t maximum, for the compiled-for architecture.

Closes #20834
2017-11-15 00:59:23 +01:00
ccrs e10d7dd45c 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
2017-11-06 22:19:23 +01:00
Teppic1 967dcc5dba Core/Creatures: Remove duplicate check for evade from Creature::CanAssistTo (#20722) 2017-10-26 14:13:56 +02:00
r00ty-tc 82a93e6be9 Core/Maps: Prevent potential null dereference
- Coverity: 1381663
2017-10-26 00:22:45 +02:00
ccrs 91c0d49c18 Core/Creature: regenerate health
There are three possible scenarios regarding regenerating health
- db lock and curhealth set to > 0
- db lock and curhealth set to 0
- dynamic lock (set in scripts and such) overriding db lock
2017-08-21 20:28:18 +02:00
Treeston 92e9376e5e Core/Creature: temporary summons are now dynamic flagged (oversight in dynspawn). This fixes issues with vehicle kit resets breaking AI.
Closes #20137 #20138 #20153.
2017-08-21 17:40:47 +02:00
ccrs cd4775420a Core/Movement: 7fff83d675 followup
remove home position set from creature PauseMovement, and use it when necessary
change log level on DelayedDelete
2017-08-12 17:35:46 +02:00
sirikfoll e2565c2597 Core/Misc: Remove Whitespaces 2017-08-11 23:06:37 -03:00
ccrs 7fff83d675 Core/Movement: waypoint movement (#20121)
Following the work done in #19361 this is the cleanup and improvement of the related logic of waypoint management.

Ref 28050f3 #18020
(taking the good parts and ignoring the incomplete work)
2017-08-12 01:40:25 +02:00
Treeston 4cf49614e6 Core/Creature: Fix a crash in .npc delete (closes #20124). Also fix an issue breaking vehicles in certain edge case situations. 2017-08-09 00:21:52 +02:00
Treeston 184c45cfe0 Core/Scripts: dynamic_spawning follow-up, I had forgotten JustRespawned existed.
- Rename JustRespawned to JustAppeared, which better matches its behavior anyway.
- Properly invoke JustAppeared for new (re-)spawns - fixes #20111.
- Fix Thaddius script to work with dynamic_spawning (mostly unrelated to the above) - Feugen/Stalagg should really be a summon group, but I don't have time to fix that right now.
- Fix default value for DynamicEscortNPC to match worldserver.conf.dist.
2017-08-06 16:07:30 +02:00
Treeston 759357049c Scripts/Commands: Fix some quirkiness and potential crashes with live DB modification commands (npc move and npc delete), which are horrible and should be deleted anyway.
Fixes #20104.
2017-08-02 22:05:40 +02:00
r00ty-tc 59db2eeea0 Dynamic Creature/Go spawning:
- True blizzlike creature spawn/respawn behavior - new creature = new object
 - Toggleable spawn groups (with C++/SAI/command options to use them)
 - Custom feature: dynamic spawn rate scaling. Accelerates respawn rate based on players in the zone.
 - Backward compatibility mode (set via group and for summons)
   to support creatures/gos that currently don't work well with this
   (this should be removed once the exceptions are fixed)

Fixes and closes #2858
Tags #8661 as fixable.
Fixes and closes #13787
Fixes #15222.
2017-07-31 21:21:04 +02:00
Treeston 28b3469e89 Core/WorldObject: Properly initialize position data for all types when initially creating them. Fixes some issues with PvP objectives not having the correct area ID set on initialization. Closes #20028. 2017-07-23 00:01:11 +02:00