* Add faction logging category
Probably should use this for more things
* Add FactionAssociation struct
This is simply just a struct that contains an array of faction ids and
multiplier. This can hold a maximum of 10 entries (Seru hit is 8, so 2
extra) this can be raised if need be.
* Add database changes and other data point changes
This is all the database changes and loading changes
Included is an optional SQL that will be used as a starting point, there
is likely errors or typos, but we will fix those as they are discovered.
* Add Client::RewardFaction function
This just takes the faction ID and the magnitude of the primary faction
hit and calculates the rest.
The minimum change will be either 1 or -1. We stop processing after we
see an ID of 0 and assume there will be no later entries.
The primary faction ID will always receive a hit even if there is no
faction association entries
* Add users of RewardFaction to NPC death, tasks, and QuestRewards
This will only use the new system if the magnitude is set, otherwise we
will just use the old system still
* Add quest system calls and lua QuestReward support
* Add #factionassociation command
This just calls RewardFaction, mostly useful for debugging
The task goal system made implementing tasks a little confusing since
the goal could be ambiguous depending on type. This also didn't support
filtering on multiple goals (e.g. looting items from matching npc names
inside an area). Deliver types could specify an npc id in `delivertonpc`
but the database may have multiple npcs with the same name or a task
might want to match partial npc names.
This replaces goalids with explicit fields for npcs, items, proximity
areas, and touch switch ids. These changes make managing task data
easier without needing to update multiple tables and allows filtering
task updates by multiple criteria. To mitigate any performance impact
from merging task proximities, only clients with explore tasks in the
current zone are checked during client movement updates.
Items and npcs still support goallists but it would be possible to
denormalize entries into delimited strings to combine with the match
lists. This would also decouple task goals from reward lists.
The client task update functions were refactored to run through a single
filtering function which significantly reduces duplicated code from the
legacy task system. This will also make it easier to later implement
any unhandled types.
Since the new fields will handle filtering single entries and lists
based on having values set, `goalmethod` now only distinguishes quest
controlled from source controlled.
This is a breaking api change, `taskexploredarea` has been removed
since explore ids no longer exist.
* [Rules] Add Frontal Stun Immunity Rules.
- Add Combat:FrontalStunImmunityClasses rule for determining Frontal Stun Immunity by class bitmasks
- Add Combat:FrontalStunImmunityRaces rule for determining Frontal Stun Immunity by race bitmasks
- Add Combat:NPCsUseFrontalStunImmunityClasses rule for determining if NPCs use Frontal Stun Immunity by class bitmasks
- Add Combat:NPCsUseFrontalStunImmunityRaces rule for determining if NPCs uses Frontal Stun Immunity by race bitmasks
- Cleanup GetDefaultGender() as best as possible with the globalload I have.
- Combat:NPCsUseFrontalStunImmunityRaces defaults to true as NPCs currently use Frontal Stun Immunity.
- Added **all** Ogre races to the check for Frontal Stun Immunity.
* Remove other Ogre races.
* [Rules] Add Rule to Disable NPC Last Names.
- Add NPC:DisableLastNames to disable NPC Last Names.
- Fix #npcedit lastname to allow you to use an empty string.
* Cleanup of classes in naming.
* Duplicate.
* Update classes.cpp
* [Bug Fix] Fix duplicate and missing messages due to innate skill in spells.
* Seperate spell and melee damage range and skip
* Refine when innate messages are produced.
* Fix magic # (replace with constant)
- Export $killed_x, $killed_y, $killed_z, and $killed_h to EVENT_DEATH_ZONE in Perl.
- Cleanup export strings and unnecessary .c_str() calls on event exports.
* - Fixed Bots Spell Damage being negative under some circumstances (heal target)
- Allow Bots to send non-melee damage reports in the same manner as Clients
- Refactor\Update Bots Spell Damage & Heal calculations to match current state of Clients.
- Allow Bots to actually utilize Spell Damage and Heal Amount stats
* Don't send packets to bots
* remove random tab
* align text lol
Removed a conditional that was rendered obsolete by moving the addition of a
mob to the auto haters list to fire after an IsValidXTarget check. This
made an entity_list call unnecessary. [zone/client.cpp]
Removed said unnecessary entity_list call. [zone/client.cpp]
Removed a superfluous call to ProcessXTargetAutoHaters [zone/attack.cpp]
* [XTarget] Disallow Corpses in XTarget Auto Slots
Why:
There exists an odd state where corpses will fill up your XTarget window.
This is reproducable using a combination of a pet to kill a mob
and timely feign death to wipe the owner's aggro.
What:
Added an IsCorpse check to IsXTarget.
Added a block to mark corpse XTargets as dirty to ProcessXTargetAutoHaters
* fixup! [XTarget] Disallow Corpses in XTarget Auto Slots
* fixup! [XTarget] Disallow Corpses in XTarget Auto Slots
* [XTarget] Disallow Corpses Code Cleanup
Added some safety, performance, and code readability changes per PR request.
What:
Add toggle for compounding bonuses for lifetap heals.
Why:
When spell damage and heal amount bonuses are scaled to ludicrous
levels, this double dip results in very high heals from
relatively weak lifetaps.
Created new rule: Spells:CompoundLifetapHeals
If true (default):
Apply spell damage bonuses to lifetap damage
Pass that amount through heal bonuses
Heal for this resulting amount
If false:
Apply spell damage bonuses to lifetap damage
Heal for this resulting amount
* update for SPA 511
* remove debugs, AA implemented
* update
* twinprocfix
* AA procs added
* format update
* update
* proctimer limits
* update
* rename function
renamed function
only check for buffs value > 0, don't need to check for AA's which are negative ID's
* pre merge
* variable updates
* Update spell_effects.cpp
* var rename
update var name to better represent its function.
* updated proc struct
added reuse timer
* reuse timer to spell procs
* updates
* debug remove
* Update mob.cpp
* fix
* merge