* Implement set of remove aura functions for remove single aura from stack.
Also some order function declarations for more clear show different aura remove functions.
* Change Spell::EffectDispel to dispel single aura instead all similar auras from caster.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
Also added function for 2 repeated loop code and fix another typo for second SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT case.
Function use wrong base at fact that spell misc values for this aura store single value instead mask.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
* Avoid use hardcoded and different max distance from owner for pet (more at contienets and less in instances)
Use instaed max visibility for map as expected.
* Explicitly pet remove at move pet to non-visible distance for player owner.
Original patch provided by Lightguard.
* Store reset time for map/difficulty pairs.
* Use DBC data for reset time and max players instead `instance_template` fields (dropped)
for each existed map/difficulty pair.
* Fix some "heroic" related checks in spells/etc.
prior this - the objects were only removed when
unit itself gots removed
this fix some crashes with Object::SetUint64
thx to juansalvador and vladimir :)
those creatures shouldn't see alive creatures - else
it would be very unfair ;)
now it's also possible that they can fight against each other
this fixes the bug, that those creatures attacked living players
removed redundant check at MoveInLos
this check is already done in istargetableForAttack
thx to NoFantasy
fixed in isVisibleForOrDetect that isInvisbleForAlive
wasn't checked.. and therefore all spiritserviceprovider
got visible
thx to NetSky
with that i've implemented all known auras which makes
units invisible for alive.. but that's currently quite hacky
i think best would be if we could set a unit-flag after those auras
getting applied
this reverts 8676 (9c50d9e70314b0cd9eb0fe3bac8040d64a9965a5)
the new flag is from wdb-files so your database should be
already alright
also i've dropped the function Player::CanInteractWithNPCs
cause it was used only in one place and didn't seem to make anything
easier
NOTE for this flag:
it just means that the creature can be seen by ghost-players
too..
so they are still visible for alive players.. unless a special
aura or ther unitflag (spiritguide/healer) disables this..
(see next commit for it)
with this flag you can specify a creature to be only
visible for dead players - this removes all hacks from
spiritguides/spirithealers from code and allows some other
special creatures
i decided to not implement an extra deathstate cause
actualy those creatures are almost equal to living ones
* Use stored in aura amount percent damage ignore for auras SPELL_AURA_MOD_IGNORE_ABSORB_FOR_SPELL
* Implement apply percent damage ignore for absorb (SPELL_AURA_MOD_IGNORE_ABSORB_SCHOOL (194))
and redunction (SPELL_AURA_MOD_IGNORE_DAMAGE_REDUCTION_SCHOOL (269)).
Later need recheck what from this 2 auras applied to armor reduction
(currently 269 used only in single spell and this spell is single affecting armor
and single normal school damage applied with 194 aura)
Also unclear is this must applied to DoTs, expected that not need.
* Implement talent 53375 boots for spell 31884.
* Add single arg version Unit::AddThreat for just adding to threat list.
* Req. provide schollmask and crit flag for any real threat value for proper threats mod apply.
* Send crit flag in DealDamage as MELEE_HIT_CRIT for spell damage for later send to threat call.
* For not affected by modifiers threat values use SPELL_SCHOOL_MASK_NONE.
* Implement aura SPELL_AURA_MOD_CRITICAL_THREAT (used only in itemset 529 effect).
This patch implements storing guid->object pairs on per map level, this leads
to less locking in ObjectAccessor in case of further multithreaded map update.
For case of cross map guid looking (auras cases) all maps are linked into
ObjectAccessor and can be traversed for this lookup.
Signed-off-by: ApoC <apoc@nymfe.net>