Inspired by patch suggested by darkstalker
Also
* Remove existed enums for family masks as contra-productive for developement.
* Drop one from horrible hack checks in SpellMgr::IsNoStackSpellDueToSpell
(spells for any fimilies with exactly 0x800 mask) I fail find useful cases
for current spell data with this check. All cases expected work correct without it.
If will some problems detected with this please report for fix in less strange way.
Also partly implement using it spell 62692.
FIXME: Some spells expected to be working for target under spell 62692 effect
not working. This need additional research and fixes.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
Inspired by patch provided by darkstalker.
Client expected receive form field change at form switing including case with switch to same form.
In fact problem too good mangos optimization in part avoid send unchanged values in update fields.
* Added function Object::SendForcedObjectUpdate()
* It used in form apply code for make sure received by client non-form applied state in middle form shifting state.
* It also used for fishing code when client also expected received some update fields chnages before
animation update. New function send update to all all client instead before used code that send it to fishing player
and resend later one more time to other players and player itself as normal update.
* Update triggering source spells.
* In code overwrite wrong family mask data for spell mod.
If more cases will be maybe will better restore spell_affect table.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
* Set as expected caster channeling target to created dynamic object
at persistent aura area spell casts for channeled spell.
* Select correct caster/target for triggered spell in case channeled perioding trigger aura.
Now safe allow this casts in like way after completed convertion to ObjectGuid use.
Also simplify code in result allowed auto cast to uint64.
Please _not_ add new uint64 storages (local and in structures) for guid values.
Place spell where it belongs instead, along with other spells doing the same. Spell will add/remove the correct flags this time.
git blame: Hasty research, lack of coffee, broken brain
Signed-off-by: NoFantasy <nofantasy@nf.no>
Thanks dpedroia15 for parts of 45958.
Note: spell 45958 may be processed further with DB table spell_scripts.
Signed-off-by: NoFantasy <nofantasy@nf.no>
- Unit::CalculateSpellDuration split into two functions
- CalculateSpellDuration taking into account combo points and caster-side spell mods
- Unit::CalculateAuraDuration taking into account target-side spell mods
- Diminishing is now applied before duration reduction mods
- Implement saving per-effect periodic timers to DB (required for auras affected by haste)
Note: spell 62105 are still considered to be negative, despite explicit exception added in IsPositiveEffect and will unexpectedly put caster in combat.
Signed-off-by: NoFantasy <nofantasy@nf.no>
* Some spells have StackAmount > 255, for example 22735, 54314
* In SMSG_AURA_UPDATE maximum stack amount is limited by 255
* Move duplicate code into SpellAuraHolder::BuildUpdatePacket function
* Cleanup some weird type casts in _LoadAuras
* Fixed wrong visibility changes in some cases at .mod phase uses.
* Apply phase change to any owned units (not only pets as before).
It also will applied in more safe way for avoid unexpected lost owner at update.
* Check view point setting auras targets accessability not only at visibility change
but also at phase change.
* Replace SetVisibility(GetVisibility()) hack like calls.