* Add SpellCastTargets::getSource to get the source position (for TARGET_FLAG_SOURCE_LOCATION)
* Add SpellCastTargets::getDestination to get the destination position (for TARGET_FLAG_DEST_LOCATION)
* Do positions handling in one place for all npc summon spell types
* Handle a bunch of shared post-summoning processing also in a shared place
* Ensure that summon positions have proper z, thx to Reamer for this part
Patch taken from insider's repo.
Also rename DoSummon function to DoSummonPet function.
Signed-off-by: stfx <stfx@hotmail.de>
Signed-off-by: Schmoozerd <schmoozerd@scriptdev2.com>
* Implement Target Type 51 as TARGET_AREAEFFECT_GO_AROUND_SOURCE
* Support spells that fill AoE targets based on source location
Thanks to Reamer for discussing these changes
Signed-off-by: Schmoozerd <schmoozerd@scriptdev2.com>
* Support to script Dummy spells with spell_scripts
* Support to script TriggerSpell spells which have no existing triggered spell
Note that the order which spell-effect actually triggers the DB script is well-defined (SCRIPT_EFFECT before DUMMY before other)
Signed-off-by: Schmoozerd <schmoozerd@scriptdev2.com>
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
Also
* Prevent more one charge use for same spell cast
* Cleanup enum SpellState from unused cases
* Propertly remove spellmod charges at spell finish in case pet/totem caster
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.
* Drop redundent and possible conflicting center point coordinates in FillAreaTargets/SpellNotifierCreatureAndPlayer call.
* Calculate proper coordinates base at PUSH_* and spell data in SpellNotifierCreatureAndPlayer
and provide its to Cell::VisitAllObjects also for use sync values in both.
* Use castingObject coordinates as caster in SpellNotifierCreatureAndPlayer that fix some GO casting cases.
Thanks to SeTM for original problem research.
- 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)