* calcThreat() is also called in addThreat() when given proper parameters,
and division by 'size' is commutative
* threat redirection is also handled in addThreat() again
It may have been faster, but unfortunately made the aggressor threatened by his enemies instead of the opposite...
In case Player heals himself, this is of course pointless as he chooses target himself, hence it had no real effect at all.
Some non-passive spells autocasted at shapeshift but without fix
in case already active form at like spell learning it not has been casted
in different from passive similar spells.
This is fix apply dodge chance part of spell 17002 for described case.
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.
This will avoid show unexpected "gain Name Name(2) Name(N)" spam in log.
Maybe exist more nice way seelct like spells instead raw listing but i not see currently it.
Aura holder unlock called later by code.
This prevent unexpected real aura delete at early effect aura proccessing
and crash at next effect aura proccessing.
* Fishing now prowide junk loot at fail skill check.
This can be disabled for old way work using SkillFail.Loot.Fishing option.
Junk loot expected to be listed in fishing_loot_template entry 0.
* Fishing can gain skill grow at skill fail check case.
Controlled by SkillFail.Gain.Fishing option.
* Fishing from fishing pool gameobject can't be fail.
Controlled by SkillFail.Possible.FishingPool
Also clarify context for remove ghost auras place after set alive state.
This let get more expected results at remove ghost speed aura.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
Also implement save game event state to DB mostly for avoid
send mails at resume game event after server downtime.
Thanks to X-Savior for inspiring and original research.
* New comamnds mirror related normal sedn commands:
- send mass items
- send mass mail
- send mass money
* Instead player name it expect or numeric racemask or textual race/team name or 'all'.
It expected to be used in 2 case: some gameevent must send mails at start/end,
and this can be useful in game commands. Both case wil implemented in later commits.
* New MassMailMgr can accept tasks for send mass mails in safe way for map update threads context/etc.
* It work in way:
- By provided race mask or more generic SQL query string in async query selected affected characters
- At query result ready at next world tick update in safe common part of tick code some from mails
from queued mas mail tasks send.
- Amount mails limited MassMailer.SendPerTick confir option (10 by default). This done for prevent
high server load/lags at send too many mails in one tick (mail send all existed characters in DB
who match to seelction criteria)
- Manager not persistant for server shutdowns so any not send mails in queue lost at shutdown.
But with default setting 10K mail send in 20 secs (10000/50/10). Adding more safe execution
for this case will make related code lot more slow and req. many DB tables and code support.
* Use Set* names for cases when function replace old value by new (instead Add*)
* Prevent hidden MailDraft copy create becase if draft have items its can't be just shared
and need preoprtly cloned, but item close is high price operation (guid use, DB tiuched and etc)
So this must be explictly operation. In next commits will be added clone function for this.
* Some MailDraft overwrite by assign cases rewrited to more clean way.