Note: override is new keyword in C++11 but VC++ already have override keyword with same behaviour long time.
GCC support explicit overrides starting at 4.7. Added workaround for GCC versions < 4.7.
* Implement duel allowed check base at proper area flag AREA_FLAG_DUEL (0x00000040)
This allow duels for example in capital area 4570 and allow/fogbid correctly some other zones and areas.
* Implement duel cancel at leave duel allowed area
* Fixed code for duels work in sunctuary if area allow duels.
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.
Existing data moved to flags_extra field, with value CREATURE_FLAG_EXTRA_GUARD (0x400 / 1024).
Remove isGuard() from Unit class to a new IsGuard() function in Creature class.
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)
* 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
Only work different from old way: target creature despawned.
So if this not expected use .respawn to it in gm mode or area respawn.
Code simplification suggested originally by rsa.
* 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.
This fixes the problem, that creatures, added at grid loading, do not start attack each other
More shedule -> schedule fixes added, removed unused Map::PlayerRelocationNotify function
You need to update your config file, new "Visibility.RelocationLowerLimit" and "Visibility.AIRelocationNotifyDelay' options added
Special thanks to Ambal for code hints and advices
Thanks to Undergarun and kero99 for making tests
* Higher ranks are now automatically filled when not listed in spell_threat
* Added some loading checks to detect inconsistent data
Signed-off-by: Lynx3d <lynx3d@some-imaginary-isp.org>
Some spells have procCharges > 0 and in same time maxStack > 1. It's support has been implemented more year ago
but current way work with single aura from stack remove at proc always made some spells work wrongly
(7 spells (with ranks) in 3.3.5a). In fact only 3 spell (with ranks) need this "one from stack" way and
all form its have similarity: Its apply max stack from start and decrease stacks at proc hit.
Another prove for correctness this way: in 2.x exist single spell with charges and maxstack that expect full aura stack remove.
So implemented opposition way: normal aura proc remove always full aura holder stack.
Special 3 cases have overwrite code for work with stack in correct for its way.
Fixed work:
* items 31857 and 50259
* recipe 46027 effects.
* talent 63730 and ranks
Affected by code changes talents 51528 and 55166 tested and work.
Spell 34026 use similar decrease stack at hit but req. independent patch for full implemention, so not work.
Visual appearance depend on model animation capability.
In addition, change stand state for creature at enter combat when creature has custom stand state.
Signed-off-by: NoFantasy <nofantasy@nf.no>
Thanks to Qsa prepare for mangos.
Note: single unsure case: is block chance must be show or set to 0 in shield disarm time.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
Also implement skip spell effects redirecting if magnet target can't be
targeted by this spell effect base at spell effect target data requirements.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
Specailly example Aura::HandleModCharm code where old code
call RemoveSpellsCausingAura or (a) dead and not called,
or (b) will remove aura self at call.
* Added safe for aura holder context version of RemoveSpellsCausingAura
* Cleanup old simple RemoveSpellsCausingAura code also.
* Move SPELLFAMILY_* to DBCEnums.h and name it as SpellFamily
* Use enum in Unit::GetAura, move family mask code to new SpellEntry helper function.
* Avoid all auras scan in search of triggred spell for 20243.
Affect any pet that are not being controlled (minipet/guardian/protector) and will also apply to pets owned by another creature.
Signed-off-by: NoFantasy <nofantasy@nf.no>
Original patch provided by Wojta
Note: From patch excluded talent 44543 and ranks stacking code.
It look like need another implemention different from suggested,
or at least more research.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
In patch added enum IgnoreUnitState and related checks now more cheating protected.
* Also remove redundant zone/area args for zone/area update function like UpdateZoneDependentAuras.
* Merge Player::*AllControlledUnits functions to Unit version with replace option args by mask arg.
* Unit::*AllControlledUnits guardian iteration make working with internal unsummon call suport for guardians case.
Also move related code to Unit and allow summon minipets by creatures.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
Also fix creature's totems unsummon at owner remove from world.