Commit Graph

604 Commits

Author SHA1 Message Date
Treeston
e2a1ccd118 [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.
2017-07-01 20:18:02 +02:00
Treeston
489478b74d Core/Entities: Extend combo point system to all Units and fix numerous quirks with rogue CP and vehicles (Malygos P3) (#19914)
- Implement Wolverine Bite (fixes #752)
- General combo point system cleanup
2017-06-24 22:41:16 -03:00
ariel-
9f765a1620 Core/Spells: fixed crash
Closes #19924
2017-06-20 13:31:36 -03:00
ariel-
85a7d5ce9a Core: ported headers cleanup from master branch 2017-06-19 23:20:06 -03:00
Shauren
d6201e5dbb Core/Grids: Ported cmangos/mangos-wotlk@ea99457e50
(cherry picked from commit 9299e9bde0)
2017-06-19 13:16:13 -03:00
Gustavo
3bfe67792d Core/Spells Allow bosses to receive KnockBack under certain conditions (#19312)
Conditions: Not player, not controlled by player and not hunter's pet
2017-06-14 14:16:12 +02:00
ariel-
2335b9de1a Core/AI: segregate GameObject ReportUse from normal Use (lock open/normal click)
Closes #19819
2017-06-06 17:57:04 -03:00
Keader
ed43883160 Core/Spells: Removed duplicated check again followup 3a0417f712
to send some info to client
2017-06-01 09:08:01 -03:00
Keader
3a0417f712 Core/Spells: Removed duplicated check
unitTarget was checked twice in Spell::EffectTaunt
2017-06-01 09:04:40 -03:00
ariel-
e27c385b48 Core/Spell: fixed some problems with per caster aura states
- Update clients whenever target has more than one application of an aura that applies such aurastate
- Update again when one application gets removed
- Fixed Fire and Brimstone computing damage if any warlock applied the Immolate (should only count for own)

Closes #19790
2017-05-27 03:16:47 -03:00
Mikhail Redko
8a5b998f48 Core/Spells: Move Big Blizzard Bear implementation to spell script (#19544) 2017-05-04 12:46:10 -03:00
Chaouki Dhib
d625c0f619 Core/Spells: change to the way the spell effect SPELL_EFFECT_JUMP work 2017-05-02 23:59:21 +02:00
ariel-
f913f3bb89 Core/Scripts: unified scripted gossip/quest api
- Changed self-accessor on GameObjectAI to "me", like UnitAI
- Moved all related functions to AI, now Unit and GameObject have the same function names with identical behaviour
- Remove "OnUpdate" from CreatureScript/GameObjectScript, was never used and we already have AI Update method
- Quest methods no longer return a bool, the return value was used to call the AI version if the ScriptMgr one returned false
- Implemented GameObjectAI::Destroyed hook (was never called), implemented Damaged method
- Rename OnStateChanged to OnLootStateChanged to reflect when it's really called, and created a new hook OnStateChanged that only gets called on GOState change
- Since the functions are now only getting called from AI, made GetAI methods full virtual. (CanSpawn method is anyways going to be used on creatures with AI)
2017-05-01 18:19:36 -03:00
ariel-
231ec8331b Core/Entities: moved PetAura handling to Player where it belongs 2017-04-28 19:12:48 -03:00
ariel-
b6b59f6c23 Core/Scripts: remove OnDummyEffect hook/sOnDummyEffect ai hook
- Duplicated logic never used, sometimes only ScriptMgr version was called, sometimes only AI
- They only encourage bad scripting practices
- You can still use OnSpellHit or a SpellScript
2017-04-28 18:59:14 -03:00
ariel-
4c4dca6d69 Core/Misc: camelize GetFaction/SetFaction properly 2017-04-28 18:37:38 -03:00
ccrs
c7a57e2a09 Core/Unit: 2170541a51 followup
use true as default value since pretty much all the script calls will expect that
2017-04-27 14:55:06 +02:00
ccrs
bf56049f2f Core/Unit: cleanup UnitState enum 2017-03-25 12:16:13 +01:00
Chaouki Dhib
a1f2f30c14 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.
2017-03-23 00:43:04 +01:00
xinef1
7567cafec8 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
2017-03-01 22:19:25 -03:00
ariel-
2e68736afc Core/Movement: Corrected all speed checks after 23b6991273
Ref issue #19210
2017-02-28 15:18:09 -03:00
ariel-
c69a7d1223 Core/Auras: reworked multiplicative AuraEffects calculation
- Splitted containers for flat modifiers and pct modifiers, as they now have different handling
- Amount is now multiplied only on apply; on unapply, iterate through auras and reset the counter
- Fixes many cases of rounding error due to applying/unapplying of small factors
- Allows amounts to be zeroed (ie with an AuraEffect of amount -100)
- Do a partial revert of 6dc37a9add, auras should update amounts only for items allowed (ie no more giving crit to a sword while having an axe in the other hand and being Poleaxe spec'd)
- SPELL_AURA_MOD_SCALE now scales additively, rather than multiplicatively (checked in sniffs)

Closes #18687
2017-02-27 14:24:20 -03:00
ariel-
f948ae80fc Core/Spell: fix Glyph of Devastate interaction with Glyph of Sunder Armor
- Killed existing ModStackAmount hack, spell is always casted in sniffs (twice with Glyph of Devastate)

Closes #14633
2017-02-22 16:50:05 -03:00
xinef1
b0ae5fadd1 Core/SmartAI: Various fixes and extensions for smart scripts: (#18673)
- Possible crashes fixed
- Memory leak fixed
- Implemented checking of vehicle conditions
- Extended eventphasemask to 12 bits (sql required to change DB field type)
- SMART_EVENT_GOSSIP_HELLO - added possibility to detect for gameobject reportUse call
- Renamed action SMART_ACTION_SET_FLY to SMART_ACTION_SET_DISABLE_GRAVITY (to reflect actual functionality)
- Added targetsLimit to action SMART_ACTION_CAST and SMART_ACTION_INVOKER_CAST to limit max amount of targets (selected randomly)
- Action SMART_ACTION_TALK corrected to always work as intended
- Properly call GroupEventHappens in action SMART_ACTION_CALL_GROUPEVENTHAPPENS if invoker was charmed or owned by the player
- Properly utilize followAngle in action SMART_ACTION_FOLLOW (db orientation should be in degrees), but keep backward compatibility
- Added action SMART_ACTION_SET_CAN_FLY (119) 0/1
- Added action SMART_ACTION_REMOVE_AURAS_BY_TYPE (120) AuraType, can be used to exit vehicle for example
- Added action SMART_ACTION_SET_SIGHT_DIST (121) sightDist
- Added action SMART_ACTION_FLEE (122) fleeTime
- Added action SMART_ACTION_ADD_THREAT (123) +threat, -threat
- Added action SMART_ACTION_LOAD_EQUIPMENT (124) equipmentId
- Added action SMART_ACTION_TRIGGER_RANDOM_TIMED_EVENT (125) minId, maxId
- Added action SMART_ACTION_REMOVE_ALL_GAMEOBJECTS (126), removes all owned gameobjects
- Added action SMART_ACTION_STOP_MOTION (127), stopMoving, movementExpired
- Extended target SMART_TARGET_HOSTILE_SECOND_AGGRO with following parameters maxdist, playerOnly, powerType + 1
- Extended target SMART_TARGET_HOSTILE_LAST_AGGRO with following parameters maxdist, playerOnly, powerType + 1
- Extended target SMART_TARGET_HOSTILE_RANDOM with following parameters maxdist, playerOnly, powerType + 1
- Extended target SMART_TARGET_HOSTILE_RANDOM_NOT_TOP with following parameters maxdist, playerOnly, powerType + 1
- Extended target SMART_TARGET_THREAT_LIST with maxdist
- Extended target SMART_TARGET_OWNER_OR_SUMMONER to be able to get charmer/owner of current owner
- Added new target SMART_TARGET_FARTHEST with maxDist, playerOnly, isInLos restrictions
- Added SpellHit hook to GameObjectAI and extended SmartGameObjectAI to call SMART_EVENT_SPELLHIT when gameobject is hit by spell
- Call GameObjectAI Reset hook on gameobject respawn (for ex. to reset one time events in smart scripts)
- Fixed some logic errors in code
- SmartAI Escorts properly despawn escortee if no players are in range
- Disable Evading while charming creature with SmartAI
- Don't call SMART_EVENT_RESPAWN for dead units before they actually respawn
- Don't call SMART_EVENT_RESPAWN for not spawned gameobjects
- Properly call SMART_EVENT_RESPAWN for gameobject respawn
- Allow action SMART_ACTION_SET_IN_COMBAT_WITH_ZONE to utilize targetlist
- Allow action SMART_ACTION_CALL_FOR_HELP to utilize targetList
- Allow action SMART_ACTION_SET_INVINCIBILITY_HP_LEVEL to utilize targetList
- Allow action SMART_ACTION_SET_VISIBILITY to utilize targetList
- Allow action SMART_ACTION_SET_ACTIVE to utilize targetList
- Allow action SMART_ACTION_ATTACK_START to select random attack target instead of first on the list
- Allow gameobjects to summon gameobjects with action SMART_ACTION_SUMMON_GO
- Properly store action invokers for action SMART_ACTION_WP_START, if no player invokers are found, distance despawn check won't be used
- Allow action SMART_ACTION_WP_RESUME to compensate for the state the unit actually is in (eg. combat)
- Allow action SMART_ACTION_MOVE_TO_POS to select random of the avaiable targets, not only the first one.
- Allow action SMART_ACTION_MOVE_TO_POS to utilize x, y, z parameters as an offset to calculated coordinates
- Action SMART_ACTION_RESPAWN_TARGET should never modify respawntime of already spawned gameobjects, use dedicated function
- Properly delete ontime events created by SMART_ACTION_CREATE_TIMED_EVENT
- If action could not be started because conditions were not satisfied, do not recalculate the waittime to action repeattime, use smaller value to recheck more frequently
- Allow target SMART_TARGET_CLOSEST_PLAYER to be used by gameobjects
- Allow target SMART_TARGET_OWNER_OR_SUMMONER to be used by gameobjects
- Fixed SMART_EVENT_COUNTER_SET to be only called for the id that was incremented
- Changed the way counters work
- Protect PhaseInc from surpassing maximum phase
- Added loading checks for missing NON_REPEATABLE flag if no repeatmin, repeatmax is set
- Added spell validation for SMART_ACTION_CROSS_CAST
2017-02-17 21:33:18 +01:00
xinef1
b3f04ec157 Added some missing SetFallInformation calls (#19121)
Fixed HP drop bug on zeppelins
Fixed possible packet relocation problems on huge transports
2017-02-13 21:05:32 +01:00
xinef1
2412886ef6 Core/Misc: Fixed player corpse looting, added player corpse loot and some more (#19122)
* Fixed corpse looting in wintergrasp
Added corpse loot for wintergrasp quests and To the Looter Go the Spoils (1166) achievement
Don't generate money for loot if no loot mode is available
Simplified few things
2017-02-13 20:42:06 +01:00
xinef1
227d5a9288 Core/Spells: Corrected summon category SUMMON_CATEGORY_VEHICLE (#19052) 2017-02-05 22:24:23 +01:00
xinef1
e1f14215d8 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
2017-02-05 15:39:22 +01:00
xinef1
93746e8c4a Implemented binary resistances and some more (#18933)
- Fixed possible exploit with tamed pets having template immunities
- Implemented binary resistances
- Corrected resistances calculations
- Pets properly inherit players spell penetration
- Fixed doubled block calculation for damaging melee spells
- Auras removing snare effects will only remove the snaring component
- Shapeshifting will properly remove movement impairing auras only and not crowd control (dragon's breath)
- Immunities are properly checked versus all schools appearing in spell, unit is immune only if immune to all schools
- Spells with melee and magic school mask should compare armor reduction with resistances and select smaller reduction
- Demonic Circle: Teleport no longer removes root effects
2017-02-04 19:50:32 -03:00
xinef1
9e1b286984 Core/Spells: Fixed spell effect 93 (SPELL_EFFECT_FORCE_DESELECT) (#19001) 2017-02-04 20:21:12 +01:00
Gerhood
bab59b28fa Core/Spells: implement Mad/Crazy Alchemist's potions 2017-01-29 14:06:40 +01:00
xinef1
0d1c535041 Fixed unstuck mechanics (#18968) 2017-01-26 11:57:32 +01:00
joschiwald
62b62ddd63 Core/Packets: updated some contactlist packets
(cherry picked from commit e01bb91887)

Conflicts:
	src/server/game/Entities/Player/Player.cpp
	src/server/game/Entities/Player/Player.h
	src/server/game/Entities/Player/SocialMgr.cpp
	src/server/game/Entities/Player/SocialMgr.h
	src/server/game/Handlers/MiscHandler.cpp
	src/server/game/Server/Packets/MiscPackets.cpp
	src/server/game/Server/Protocol/Opcodes.cpp
	src/server/game/Server/Protocol/Opcodes.h
	src/server/game/Server/WorldSession.cpp
	src/server/game/Server/WorldSession.h
	src/server/shared/Database/Implementation/CharacterDatabase.cpp
	src/server/shared/Database/Implementation/CharacterDatabase.h
2017-01-25 23:36:24 -03:00
tkrokli
6a51a88767 Update Copyright notice for 2017
Happy new year!
2017-01-02 19:52:45 +01:00
Shauren
618cf0e1c2 Core/Units: Cleanup hardcoded magic numbers for byte field offsets
(cherry picked from commit ac1dc758b9)
2016-12-15 08:16:01 -03:00
ariel-
e1a2b1a813 Core/Misc: readd some codestyle changes inadvertently reverted
- Ref commit 6dc37a9add
2016-12-13 15:21:41 -03:00
ariel-
3a52ad8d38 Core/Entities: Replace existing GetAuraEffectsByType + iteration uses with proper helper functions 2016-12-13 02:18:06 -03:00
ariel-
f0772eea98 Core/Spell: implemented dispel reflection
Closes #18323
2016-12-11 15:08:01 -03:00
ariel-
01d272d6cb Core/Spell: improved immunity logic for dispels
- Fixes dispel magic removing immunity spells (Divine Shield for example). Ref issue #18370
2016-12-11 15:08:00 -03:00
Aokromes
190fdfdf63 Core/Spell: Hand Of Reckoning no damage when taunting players pet (#17518)
* Core/Spell: Hand Of Reckoning no damage when taunting players pet

By Effec7, closes #9068
2016-12-01 11:48:13 -03:00
Shauren
6dc37a9add Core/Auras: Rewritten conditionally applying SPELL_AURA_MOD_WEAPON_CRIT_PERCENT, SPELL_AURA_MOD_DAMAGE_DONE and SPELL_AURA_MOD_DAMAGE_PERCENT_DONE auras
* Now the entire aura is removed when changing equipment
* All aura types can now depend on equipped items

(cherry picked from commit b9f7b500a3)
2016-11-20 01:46:47 -03:00
ariel-
503259e6fe Core/Spell: register items received through SPELL_EFFECT_SUMMON_CHANGE_ITEM for quest credit
- Also sends proper SMSG_ITEM_PUSH_RESULT packet

Closes #3505
2016-11-18 03:42:01 -03:00
ariel-
56beec8aaf Core/Spell: Fixed irregular handling of SPELLMOD_DOT
- Applied twice for some dots
- Missing for Health Leech Periodic
- Missing in a few scripts

Closes #17463
2016-11-16 04:06:32 -03:00
SnapperRy
a38c094a11 Core/GameObject: spawn linked traps at gameobject creation instead of using DB spawns. (#18172)
Closes #11328.
2016-11-01 22:24:03 +01:00
Snapper
5d9d25d596 Core/GameObjects: Handle despawning and respawning of nearby linked traps on gameobject despawn and respawn
Closes #12139
Closes #17553
2016-10-30 11:20:58 +01:00
ariel-
d3a71a8338 Core/Spells: use DamageInfo struct to calc spell absorbs and resists, and use calculated proc hitMask on aura ticks
Closes #18135
2016-10-26 02:16:11 -03:00
SnapperRy
551a8ff8ae Core/Spell: allow SPELL_EFFECT_QUEST_COMPLETE to set a quest to rewarded only if that quest is used as internal flag by the server (has flag 1024 - QUEST_FLAGS_TRACKING). 2016-10-16 22:39:36 +02:00
Shauren
1c7f099297 Core/Items: Defined all item flags
(cherry picked from commit ef29f32965)
2016-10-11 19:46:29 -03:00
Krudor
73a72fb7d3 Core/Spells: Effect leap back fix (#18057)
* Fixed unintentional typo?

Seemed to fix the issues related to the effect for the spells I tried.
Sometimes the caster triggers leapback onto targets, and with the old
code, it instead made the caster leap back instead of its targets

(cherry picked from commit 08aab73c7f)
2016-10-09 21:57:36 +02:00
ariel-
d078029124 Revert "Core/Unit: prevent m_extraAttacks underflow. Fixes a freeze with SPELL_EFFECT_ADD_EXTRA_ATTACKS"
This reverts commit f09e7cbbfe.
2016-10-07 12:50:08 -03:00