ASSERT hard use in predictable way because diff. 3rd party libs code
redefine it inf different ways and hard make sure that used in end
of mangos define version. This is real detected problem make some
expected assert checks ignored and so bugs not detected as expected from code.
In addition made related changes:
* Common.h header expected to be first include in any src/game/header except most simple cases.
* Related FILE.h header expected to be first include in FILE.cpp
* Fixed some absent includes and type forwards for safe build without PCH enabled.
* Avoid using MANGOS_ASSERT in src/framework code
* Drop some food action buttons
* Drop attack spells for caster classes
* Use expected simlifed spell version 20154 (it replaced by full version at learn spell 53408 and similar)
In code used helper code for support 2 versions as fake non-stacking ranks.
* Some other old "max ranks" of talents and spells now are permanent bonuses known from start (only "max rank" for spell exist)
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
* Drop now redundant part of data from `spell_chain`.
* Allow store in spell_proc_event cusom ranks data for ppm for chained ranks.
* Drop now redundant part of data from `spell_proc_event`.
* This coeff used if not spell_bonus_data provided for spell
* Continue prev. commit line expected that creature casts not affected by DotFactor
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
Important changes:
* Chaged way caluclation "-5% of total per any additional effect" to percent
apply instead use raw value that correct only for 3500 cast time spells.
* GetSpellCastTimeForBonus result now alwasy not applied to creature casted spells
Before it not applied only to instant spells. Please test if this ok in all cases.
* Leech effect modify spell casting time move into GetCastingTimeForBonus and then called
also for melee spells. But only creature spells exist with melee class damage and its
not affected by GetCastingTimeForBonus anyway now.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER expected seelction friendly targets
for spell caster around spell caster (so ignore original caster faction).
This meaning that for begative spell also selected friendly targets for
spell caster object.
* Move and rename MAX_REAGENTS to DBC Strcuture.h.
It used only afore access to SpellEntry field and so part of strcuture definition.
* Add MAX_SPELL_TOTEMS and MAX_SPELL_TOTEM_CATEGORIES for same reasons, and use in code.
(based on 400's commit 0f37423)
(based on 400's commit 636cfef)
(based on 400's commit 0bbe3a7)
(based on 400's commit ce86b56)
(based on 400's commit b74c6a8)
* Use area id instead zone id for home bind zone info as expected.
This will for example proper show capital name in area himebinding for capital; tavern.
* Clarify that player create zone in fact is area (subzone)
* Implement SPELL_EFFECT_BIND for normal homebinding.
Also support spell target position mode used in 53823/53821 spells
* Add Spell::EffectEmpty for mark spell effects that used but not expect any code in handler.
Example weapon spells that used just as known spell markers for client.
Original patch idea inspirit by Sadikum patch suggestion.