* Implement spell AI pulling, fix throw stone
* more pull tweaks
* holding check at start of ai process
* fully implement ^pull logic to always return, can still be overidden by ^attack
* Rewrite ^pull logic and handling. **MORE**
Add ^setassistee command to set who your bots will assist. Bots will always assist you first before anyone else.
If the rule Bots, AllowCrossGroupRaidAssist is enabled bots will assist the group or raid main assists.
Rewrites logic in handling of pull and returning to ensure bots make it back to their location.
* Move HateLine to a better ID
* cleanup ST_Self logic in CastChecks
* Removed unused BotSpellTypeRequiresLoS
* Move fizzle message to define
* add timer checks to Idle/Engaged/Pursue CastCheck to early terminate
* Add back !IsBotNonSpellFighter() check to the different CastCheck
* Correct IsValidSpellRange
* Implement AAs and harmtouch/layonhands to ^cast --- fix IsValidSpellRange
* Add PetDamageShields and PetResistBuffs to IsPetBotSpellType()
* Add priorities to HateLine inserts for db update
* Remove SpellTypeRequiresCastChecks
* Add bot check to DetermineSpellTargets for IsIllusionSpell
* merge with previous
* Correct bot checks for ST_GroupClientAndPet
* Remove misc target_type checks
* Add lull/aelull to ^cast
* Add more checks for CommandedSubTypes::AETarget
* remove unneeded checks on IsValidSpellTypeBySpellID
* add to aelull
* rewrite GetCorrectSpellType
* Add IsBlockedBuff to CastChecks
* Add spellid option to ^cast to allow casting of a specific spell by ID
* ^cast adjustments for spellid casts
* Add missing alert round for ranged attacks
* More castcheck improvements
* CanUseBotSpell for ^cast
* remove ht/loh from attack ai
* remove SetCombatRoundForAlerts that triggered every engagement
* Add RangedAttackImmunity checks before trying to ranged attack
* move bot backstab to mob
* fix MinStatusToBypassCreateLimit
* more backstab to mob cleanup
* add bot checks to tryheadshot / tryassassinate
* adjust version number for bots
* add back m_mob_check_moving_timer, necessary?
* add sanity checks for classattacks
* Get rid of Bots:BotGroupXP and change logic to support Bots:SameRaidGroupForXP
Bots won't do anything if not in the same group so this should more accurately control only when in the same raid group.
* add "confirm" check to ^delete
* Update bot.cpp
* Remove `id` from bot_settings, correct types
* Implement blocked_buffs and blocked_pet_buffs
* more blocked buff tweaks
* add beneficial check to ^blockedbuffs
* command grammar
* missing )
* Move getnames for categories and settings to mob, rename hptomed/manatomed
* add GetBotSpellCategoryIDByShortName and CopyBotBlockedPetBuffs, update ^defaultsettings command
* cls cleanup
* Allow bots to clear HasProjectIllusion flag
* Add PercentChanceToCastGroupCure
* Implmenet PetCures, add some missing types for defaults/chance to cast
* Change GetRaidByBotName to GetRaidByBot
* Typo on PetBuffs implement
* Change GetSpellListSpellType to GetParentSpellType
* missing from GetChanceToCastBySpellType
* Fix performance in IsValidSpellRange by flipping HasProjectIllusion
* merge with prev
* merge with cls cleanup
* Reorder IsTargetAlreadyReceivingSpell/CheckSpellLevelRestriction/IsBlockedBuff
* Combine GatherGroupSpellTargets and GatherSpellTargets
* Cleanup IsTargetAlreadyReceivingSpell
* Fix ^petsettype to account for usable levels of spells and remove hardcoded level limits.
* Remove Bot_AICheckCloseBeneficialSpells and use AttemptCloseBeneficialSpells for better performance
* remove default hold for resist buffa
* move IsValidSpellRange further down castchecks
* raid optimizations
* correct name checking to match players
* more name checks and add proper soft deletes to bots
* organize some checks in IsImmuneToBotSpell
* Fix GetRaidByBotName and GetRaidByBot checks to not loop unnecessarily
* Move GatherSpellTargets to mob
* Change GetPrioritizedBotSpellsBySpellType to vector
Some slipped through in "organize some checks in IsImmuneToBotSpell"
* Move GatherSpellTargets and Raid to stored variables.
Missing some in "organize some checks in IsImmuneToBotSpell"
* comment out precheck, delays, thresholds, etc logging
missed some in "organize some checks in IsImmuneToBotSpell"
* Missing IsInGroupOrRaid cleanup
* Implement AIBot_spells_by_type to reduce looping when searching for spells
* Add _tempSpellType as placeholder for any future passthru
* todo
* Move bot_list from std::list to std::unordered_map like other entities
* Fix missing raid assignment for GetStoredRaid in IsInGroupOrRaid
* TempPet owned by bots that get the kill will now give exp like a client would
* Remove unnecessary checks in bot process (closescanmoving timer, verify raid, send hp/mana/end packet
* Fix client spell commands from saving the wrong setting
* Cleanup ^copysettings command and add new commands
* Add pet option to ^taunt
No longer has toggle, required on/off option and an optional "pet" option to control pets' taunting state
* Allow pet types to ^cast, prevent failure spam, add cure check
* more raid optimizations, should be final.
10 clients, 710 bots, 10 raids, ~250 pets sits around 3.5% CPU idle
* Move spell range check to proper location
* Implement ^discipline
* remove ^aggressive/^defensive
* remove this for a separate PR
* cleanup
* Add BotGroupSay method
* todo list
* Add missing bot_blocked_buffs to schema
* Remove plural on ^spelltypeidsand ^spelltypenames
* Move spelltype names, spell subtypes, category names and setting names to maps.
* move los checks to mob.cpp
* Bot CampAll fix
* Bots special_attacks.cpp fix
* Add zero check for bot spawn limits
If the spawn limit rule is set to 0 and spawn limit is set by bucket, if no class buckets are set, it defaults to the rule of 0 and renders the player unable to spawn bots.
This adds a check where if the rule and class bucket are 0, it will check for the spawn limit bucket
* Add HasSkill checks to bot special abilities (kick/bash/etc)
* code cleanup 1
* code cleanup 2
* code cleanup 3
* code cleanup 4
* fix ^cast wirh commanded types
* Remove bcspells, fix helper_send_usage_required_bots
* linux build fix
* remove completed todo
* Allow inventory give to specific ID slots
* Update TODO
* Correct slot ranges for inventorygive
* Add zone specific spawn limits and zone specific forced spawn limits
* remove bd. from update queries where it doesn't exist
* Rename _spellSettings to m_bot_spell_settings
* Add IsPetOwnerOfClientBot(), add Lua and Perl methods
* Make botOwnerCharacterID snakecase
* Throw bot_camp_timer behind Bots:Enabled rule
* Move various Bot<>Checks logging to BotSpellChecks
* Remove from LogCategoryName
* Consolidate IsInGroupOrRaid
* Consolidate GatherSpellTargets
* Add missing Bot Spell Type Checks to log
* Add GetParentSpellType when checking spelltypes for idle, engaged, pursue CastChecks.
* Consolidate AttemptForcedCastSpell
* Consolidate SetBotBlockedBuff/SetBotBlockedPetBuff
* Add list option to ^spellpriority commands.
* Move client functions to client_bot
* Move mob functions to mob_bot
* Move bot spdat functions to spdat_bot
* Move SendCommandHelpWindow to SendBotCommandHelpWindow and simplify
* Change char_id to character_id for bot_settings
* update todo
* Fix typo on merge conflict
* Cleanup command format changes, remove hardcoded class IDs in examples.
* Set #illusionblock for players to guide access
* Move client commands for bot spells from gm commands to existing bot commands
* Fix alignment issues
* More alignment fixes
* More cleanup 1
* More cleanup 2
* Fix BotMeditate to med at proper percentages
* Correct GetStopMeleeLevel checks for some buff checks
* Add back hpmanaend update to bot raid, force timer update to prevent spamming
* Remove log
* Cleanup ranged and ammo calculations - Adds throwing check for match
* Add check in distance calculations to stay at range if set even if no ammo or ranged
* Move melee distance calculations to better function
* Add GetBuffTargets helper
* Missing p_item, s_item in CombatRangeInput
* Linux test?
* Reduce GetCorrectBotSpellType branching slightly
This is still an ugly ass function but my brain is melted
* Line fixes
* Make bot pets only do half damage in pvp
* Add bot pet pvp damage to tune
* Add bot pet check for AIYellForHelp
* Add bots to UseSpellImpliedTargeting
* Move toggleranged, togglehelm and illusionblock to new help window. Add actionable support
* Add bot and bot pet checks to various spells, auras and targeting checks that were missing.
* update todo
* New lines
* Correct DoLosChecks
* Remove Log TestDebug
* Remove _Struct from struct declarations
* Add bot check to IsAttackAllowed for GetUltimateOwner to skip entity list where possible
* Wrap SaveBotSettings in Bots Enabled check
* Remove comment
* Wrap bot setting loading for clients in bots enabled rule
* Cleanup BlockedBuffs logic in SpellOnTarget
* Rename BotSpells_Struct/BotSpells_Struct_wIndex
* Rename spawn/create status bypass rules, fix return for spawn limit
* Remove unnecessary return in CanBuffStack, cleanup
* Enable recastdelay support for clients
* Remove unused variables
* Rename _assistee to bot_assistee
* hardcode BotCommandHelpWindow colors
* todo
* Fix ^cast summoncorpse
* todo
* Reimplement secondary colors to BotSendCommandHelpWindow
* Give ^copysettings/^defaultsettings more options, cleanup.
* Cleanup some commands
* Add comment to CheckLosCheat/CheckLosCheatExempt
* Make struct BotSpellSettings snake case
* Allow duplicate casts of same spell on target for heals and cures
* Add default delay to cures
* Remove unused methods
* Implement missing ^spellresistlimits/^resistlimits command
* Move functions out of mob.h and cleanup
* Return for GetRawBotList
This checks offline bots too
* Rename BotGroupSay to RaidGroupSay
* Prevent bots from forming their own group if a bot that is a group leader is removed from the raid
* Linux fix?
* IsPetOwner fixes
* Add remove option to list for ^blockedbuffs / ^blockedpetbuffs
* Implement ^spellannouncecasts to toggle announcing casts of spell types
* Remove rule Bots:BardsAnnounceCasts
* Update bot.h
* Remove unused no_pets option from GatherSpellTargets
* Move ^attack response back to normal chat window (other)
* Set lower limit of spell delays to 100 rather than 1
* Correct pet checks on GetUltimateSpell functions
* Add rules (Bots, AICastSpellTypeDelay, Bots, AICastSpellTypeHeldDelay) to prevent spamming of failed spell type AI casts
* Correct pet buff type logic to catch DS/Resists with other spell effects in them
* Fix defaults for clients
* Add more logic for necros/shaman for default heal thresholds due to lich and canni
* Rename SpellHold, SpellDelay, SpellMinThreshold, SpellMaxThreshold, SpellRecastDelay to fit SpellType style naming
* Use GetTempSpellType() for announce check in RaidGroupSay
* Make all spell shortnames plural where applicable
* Update bot.cpp
* Bots:BotsUseLiveBlockedMessage filter to spell failure
* Move GetSpellTargetList to only get called when necessary to reduce overhead
* formatting
* Formatting
* Simplify case SE_Illusion and SE_IllusionCopy for GetIllusionBlock
* Clean up InterruptSpell
* Cleanup IsBot() checks for DetermineSpellTargets->ST_GroupClientAndPet
* Cleanup range/aoe_range check in SpellFinished
* Cleanup DetermineSpellTargets->ST_GroupNoPets
* Cleanup DetermineSpellTargets->ST_Self for bot summon corpse
* Cleanup DetermineSpellTargets->ST_Pet
* Cleanup bot logic in TryBackstab
* Cleanup IsAttackAllowed checks for bots and their pets
* Cleanup StopMoving for bots
* Cleanup CanThisClassTripleAttack
* Fix casting for GetIllusionBlock checks
* Formatting
* Fix DetermineSpellTargets for group spells (this also wasn't properly checking the rule Character:EnableTGB in master)
* Cleanup spelltarget grabbing logic, consolidate group heals in to GetNumberNeedingHealedInGroup
* Throw added client los pet checks behind LoS cheat rule for bots
* CLeanup give_exp on npc death logic and ensure client pets always pass.
* Undo unintended rename from previous refactor
* Remove pointless Bots, SameRaidGroupForXP rule
* Revision to 0690783a9d1e99005d6bee0824597ea920e26df9
---------
Co-authored-by: Akkadius <akkadius1@gmail.com>
* fix stacking issues with Aegolism spell line
Issue: When casting buffing a player with aegolism spell line, who already has cleric AC, symbol and heroism spell, it would overwrite heorism buff and leave other two.
Aegolism spell line when applied when a client has Heroism spell line, AC spell line, and symbol spell line. Should overwrite the Heroism spell and fade the AC and Symbol buffs.
* Update spdat.cpp
* [Bug] Prevent Ressurection Spells from being resisted
Added IsRessurectionSpell(uint16 spell_id) to assist with checking on a spell is a ressurection spell.
This was noticed when Dragons of Norrath launched and the Tier 5 Progression AA provided SPA 180 2% SE_ResistSpellChance
* Helps if I spell it correctly
* Update per feedback
* [Bug] HT Crit Ratio
This is used to tune and bring HT Crits more in line with the correct values as proven in screenshots.
* requested changes
* mistakenly kept mob::
* [Rules] ResurrectionEffectsBlock to prevent/allow/move buffs.
This removes the rule ResurrectionEffectsBlock (Bool) and creates ResurrectionEffectsBlock (Int)
Default = 2
Setting to 0 = Functions as it did before any blocking changes, Focus of Spirit and Strength buffs can overwrite Resurrection Effects.
Setting to 1 = Blocks all buffs that could overwrite Resurrection Effects.
Setting to 2 = Allows all buffs that would overwrite Resurrection Effects to land, however they will be moved to a new buff slot if one is available to allow both the beneficial buff to land and detrimental effects of Resurrection Effects to stay in effect until the duration is expired.
* Update logging
---------
Co-authored-by: Akkadius <akkadius1@gmail.com>
* [Bug Fix] Restore missing messages for lifetap and dmg spells.
* Fix unintended duplicate message for DD on clients.
* Improve performance and accuracy of IsDamageSpell()
* test
* complete
* Update effects.cpp
* Update spells.cpp
* Update effects.cpp
* [Spells] Support for bards using Disciplines while casting or /melody.
Support for spell field 'cast not standing' not allow casting from divine aura
* [Spells] Support for bards using Disciplines while casting or /melody.
DA bypass logic for spells with field 'cast_not_standing'
* updates
* stun and mez bypass
* Update spdat.cpp
* Update spdat.cpp
* Update spells.cpp
* clean
* requirement messages
* update
* pct
* save work
* Reform code 1_22_22
* updated
* update id to pointer
* Update spells.cpp
* rework 2
* update 1_23_22
* Update spells.cpp
* updates
* msg string works
* fix disc timers not be set
* more optimization
* update 1_23_22 PM
moved stop casting out
charm and harmony moved in
* update 1_25_22
rework of functions
* updates 1_26_22
* remove old checks
* gm override added for some
* update bard AA casting checks
* updates
* addbuff exception for bard
* debugs
* charm working
* update
* moved skill check here
* cast from item while singing
* lets not attack mounts
* instant cast items click
* aug clicks working
* aug tests
Bug? Cast time not display on aug clicks for bards
* aug recast from items semi ok
* added item timer function
* unified setting item recast timer
* clean up time
* update
* bard AA cast updates
* debugs removed
* debugs removed
* clean up
* clean up
* better placement of bindsight and numhits fix
* move and rename function
* Update spells.cpp
* add logs
* delete old DoCastingChecks
* Removed old bard pulse functions
* remove AEBardPulse and GroupPulse
* removed Raid::GroupBardPulse
* Pulse Restriction: Divine Aura
* Pulse Restrictions : Fear behavior
* Update spells.cpp
* Update spells.cpp
* [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic.
bots...
* [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic.
added recommended isvalidspell check
* [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic.
merged
* [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic.
removed defines since we have them as constants
* test
* complete
* Update effects.cpp
* Update spells.cpp
* Update effects.cpp
* [Spells] Support for bards using Disciplines while casting or /melody.
Support for spell field 'cast not standing' not allow casting from divine aura
* [Spells] Support for bards using Disciplines while casting or /melody.
DA bypass logic for spells with field 'cast_not_standing'
* updates
* stun and mez bypass
* Update spdat.cpp
* Update spdat.cpp
* Update spells.cpp
* 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
* update for SPA 511
* remove debugs, AA implemented
* update
* format update
* rename function
renamed function
only check for buffs value > 0, don't need to check for AA's which are negative ID's
* var rename
update var name to better represent its function.
* new instrument mod spell effect checks
PR split
* format
* Update spdat.cpp
correction, all direct damage spells get modifiers. Made a mistake with the parse, was using wrong mod.
* restriction changes
cure effects can be modified.
decided to keep a list of known effects that are not modified to return false. and will keep the default to be true for anything as to not inhibit custom bard song development
* SE_ProcChance is modified
* Update spdat.cpp
* update
* Update spell_effects.cpp
- Added quest::getitemstat(item_id, stat_identifier) to Perl.
- Added quest::getspellstat(spell_id, stat_identifier, slot) to Perl.
- Added eq.get_item_stat(item_id, stat_identifier) to Lua.
- Added eq.get_spell_stat(spell_id, stat_identifier, slot) to Lua.
Wasn't sure where to put the GetItemStatValue() method so I put it in inventory profile, I can move it wherever is preferred.
These additions will allow people to grab item and spell stat values in plugins without needing a mob object.
* Work started on SPA 476
defines
* bonus structure add
bonus structure set up
* updates spa476
updates spa476
* spell bonus now functional
spell bonus working well.
* major update with debug messages
aa, item and spell now working
* Pre clean up, effect implemented
working for AA, spells, items, all checked for stacking issues.
* removed debug messages
removed debug messages
* spdat description added
spdat description added
* minor fix
removed debug shout
removed unneeded code check.
* syntax updates, minor fixes
syntax updates, minor fixes
* syntax fixes
syntax fixes
* improvements to code
moved function to check at swap item. Easier to manage and more live like behavior. Required minor adjustment
Still working on AA toggle.
* updates to aa buy, functionalish
* Syntax / Formatting
* Add break / default to switch
* updates
* completed v2
* Major revisions
Main function check moved to when items are swapped and out of when ever bonus are recalculated.
AA Toggle and data structure now more accurate to live.
* Update aa.cpp
* debug removed
* implemented SE_Buy_AA_Rank
Closer to live.
* Update aa.cpp
broadening AA toggle to be more general use.
* improved various checks
aa toggle is now broadly implemented to be usable with any passive effect.
Co-authored-by: Akkadius <akkadius1@gmail.com>
* Implemented SPA Duration Pct
Implemented new spell effects
SE_Duration_HP_Pct 524
SE_Duration_Mana_Pct 525
SE_Duration_Endurance_Pct 526
Consumes 'base1' % of your maximum health/mana/endurance every 6 seconds. 'max' is maximum amount that can be consumed per tic.
Additional Functionality
Can be used as a heal/gain % by setting the base1 value to a positive.
* Implemented SPA Instant Mana/End pct
Fixes for SPA 524-526
Implemented
SE_Instant_Mana_Pct 522
SE_Instant_Endurance_Pct 523
Extracts 'base1' percent of your maximum mana/endurance, or 'max', whichever is lower.
* Implemented: SPA 521 EndAbsorbPctDmg
Implemented
SE_Endurance_Absorb_Pct_Damage 521
Absorb Damage using Endurance: base1 % (base2 End per 1 HP)
Note: Both base1 and base2 need to be divided by 100 for actually value
* Implemented SE_HealthTransfer 509
Implemented
SE_Health_Transfer 509
'life burn'
Consume base2 % of Hit Points to Damage for base % of Hit Points
Can be used for heal
Act of Valor
* Implemented SPA 515,516,518,496
Implemented
SE_AC_Avoidance_Max_Percent 515
SE_AC_Mitigation_Max_Percent 516
SE_Attack_Accuracy_Max_Percent 518
Above are stackable defense and offensive mods
SE_Critical_Melee_Damage_Mod_Max 496 - This is a non stackable melee critical modifier
* Implemented SPA 503 , 505
SE_Melee_Damage_Position_Mod 503
define SE_Damage_Taken_Position_Mod 505
SPA 503 increase/decreases melee damage by percent base1 based on your position base2 0=back 1=front
SPA 504 increase/decreases melee damage taken by percent base1 based on your position base2 0=back 1=front
* Implemented 467,468
Implemented
SE_DS_Mitigation_Amount 467
SE_DS_Mitigation_Percentage 468
Reduce incoming DS by amt or percentage. base1 is value, if a reduction is desired it should be set to negative for both.
* Fixes
Formula fixes
* Update spdat.h
Added spa descriptions.
* Implemented SPA 469, 470
Implemented
SE_Chance_Best_in_Spell_Grp 469 Chance to cast highest scribed spell within a spell group. All base2 spells share roll chance, only 1 cast.
SE_Trigger_Best_in_Spell_Grp 470
Chance to cast highest scribed spell within a spell group. Each spell has own chance.
Additional Changes:
Rewrote TrySpellTrigger function used for SPA 340 since it incorporates SPA 469. Improved code so that chance of spell being triggered should be more accurate statistically.
* Implemented SPA 474, 494
Implemented
SE_Pet_Crit_Melee_Damage_Pct_Owner 474 - Gives pets a critical melee damage modifier from the owner
SE_Pet_Add_Atk 494 - Gives pet a ATK bonus from the owner
Fixed SE_PetMeleeMitigation 397 - The bonus was not being calculated
* Implemented SPA 465,477,478
Implemented
SE_PC_Pet_AE_Rampage 465
Chance for pet to AE rampage with a damage modifier
SE_Hatelist_To_Top_Index 477
Chance to be put on top of RAMPAGE list
SE_Hatelist_To_Tail_Index 478
Chance to be put on bottom of RAMPAGE list
* Implemented
Implemented
SE_Fearstun 502
Stun with a max level limit. Normal stun restrictions don't apply. Base1 duration, base2 PC duration, max is level limit
SE_TwinCastBlocker 39
Previously unused spell effect that is now used on live. Simply, if this effect is present in a spell then the spell can not be twin cast.
* Implemented SPA 483
Implemented
Fc_Spell_Damage_Pct_IncomingPC 483
- Focus effect that modifies iby percent incoming spell damage on the target.
Base1= min Base2= max. Final percent is random between max and min each time focus is applied from a spell cast.
Note: Written to stack with similar functioning focus SPA 269 SE_FcSpellVulnerability.
* Implemented SPA 484
Implemented
SE_Fc_Spell_Damage_Amt_IncomingPC 484 // focus effect that modifies incoming spell damage by flat amount. Consider it a debuff that adds damage to incoming spells. Positive value to add additional damage.
* Implemented SPA 481, 485,486,512
Implemented
SE_Fc_Cast_Spell_On_Land 481
Focus effect that is checked when a spell is cast on a target, if target has this focus effect and all limiting criteria are met, then the target will cast a spell as specified by the focus. Can be given a roll chance for success. Base1=Chance, Base2=Spellid
Note: This spell has a huge amount of potential applications. See 'Alliance' type spells on live. (ie live spell 50247)
Implemented associated focus limits seen in live spells.
SE_Ff_CasterClass 485
- Caster of spell on target with a focus effect that is checked by incoming spells must be specified class or classes.
SE_Ff_Same_Caster 486 -Caster of spell on target with a focus effect that is checked by incoming spells 0=Must be different caster 1=Must be same caster
The following is an associated effect seen with SPA 481
SE_Proc_Timer_Modifier 512
This provides a way to rate limit the amount of spell triggers generated by SPA 481. For example after 1 successful spell trigger no additional spells can be triggered for 1.5 seconds. Ie. Base=1 and Base2 1500.
Written in a flexible format to allow scaling of multiple different buffs with this effect at same time.
* Stacking fixes for new effects
Stacking fixes for new effects.
* merge with upstream master
merge and update up spdat.h
* Update spdat.h
* Fix for bolt spell targeting self if target zone/died while casting.
Fix for bolt spell targeting self if target zone/died while casting. Despite the name being "ST_TargetOptional", this target type is reserved for projectile spells which all require a target, thus should be treated like any other targeted spell.
* Implemented new focus and limits
SE_Fc_Amplify_Mod 507 @Fc, On Caster, damage-heal-dot mod pct, base: pct
SE_Fc_Amplify_Amt 508
@Fc, On Caster, damage-heal-dot mod flat amt, base: amt
SE_Fc_ResistIncoming 510 implemented, @Fc, On Target, resist modifier, base: amt
SE_Fc_CastTimeMod2 500
@Fc, On Caster, cast time mod pct, base: pct
SE_Fc_CastTimeAmt 501
@Fc, On Caster, cast time mod flat amt, base: milliseconds
SE_Ff_DurationMax 495
@Ff, Max duration of spell that can be focused, base: tics
SE_Ff_ReuseTimeMin 490
@Ff, Minimum recast time of a spell that can be focused, base: recast time
SE_Ff_ReuseTimeMax 491
@Ff, Max recast time of a spell that can be focused, base: recast time
SE_Ff_Endurance_Min 492
@Ff, Minimum endurance cost of a spell that can be focused, base: endurance cost
SE_Ff_Endurance_Max 493
@Ff, Max endurance cost of a spell that can be focused, base: endurance cost
SE_Ff_Value_Min 479
@Ff, Minimum base value of a spell that can be focused, base: spells to be focused base1 value
SE_Ff_Value_Max 480
@Ff, Max base value of a spell that can be focused, base: spells to be focused base1 value
SE_Ff_Override_NotFocusable 460 @Fc, Allow spell to be focused event if flagged with 'not_focusable' in spell table, base: 1
Added basic focus and limit descriptions to source.
* Update spell_effects.cpp
hotfix
* fix for SE_Ff_Override_Notfocusable
Fix for SE_Ff_Override_Notfocusable
Logic was not correct. Changed where spell field 'not_focusable' makes check to properly account for this effect.
* Update to SE_Fc_CastTimeMod2
Update to SE_Fc_CastTimeMod2
Found sources that show it can reduce cast time to instant. Rewrote formulas to account for such.
* fix
unintentional change, reverted back.
* fixed missing break statements
fixed missing break statements
* update to IsFocusLimit
missing limit cases added to IsFocusLimit
* Format CalcFocusEffect
* Revert "Format CalcFocusEffect"
This reverts commit e5b81791ee82e45a2c0b819bd15f2c9adc94cfd1.
* Revert "Revert "Format CalcFocusEffect""
This reverts commit a1ce29a8754704bbcce8f751fb9082383771d878.
* Post merge fixes
* More post merge adjustments
* Another post merge change
* Add LimitResist constants back
* Swap int16's for 32's
* int32 fix
Co-authored-by: Akkadius <akkadius1@gmail.com>
* Recoded SE_TriggerOnCast Focus effect
Recoded SE_TriggerOnCast focus effect to be consistent with how all other focuses are checked. No longer an arbitrary limit as to number of a focus effects of this type you can have.
* new command: resetdisc_timer
usage: #resetdisc_timer [all | timer_id]
* syntax fixes
syntax improvements
* minor fix
changed numhits check
* Update spell_effects.cpp
* added better support for spell procs that don't require target.
* syntax
* Formatting and syntax tweaks
Co-authored-by: Akkadius <akkadius1@gmail.com>
* Implemented SPA Duration Pct
Implemented new spell effects
SE_Duration_HP_Pct 524
SE_Duration_Mana_Pct 525
SE_Duration_Endurance_Pct 526
Consumes 'base1' % of your maximum health/mana/endurance every 6 seconds. 'max' is maximum amount that can be consumed per tic.
Additional Functionality
Can be used as a heal/gain % by setting the base1 value to a positive.
* Implemented SPA Instant Mana/End pct
Fixes for SPA 524-526
Implemented
SE_Instant_Mana_Pct 522
SE_Instant_Endurance_Pct 523
Extracts 'base1' percent of your maximum mana/endurance, or 'max', whichever is lower.
* Implemented: SPA 521 EndAbsorbPctDmg
Implemented
SE_Endurance_Absorb_Pct_Damage 521
Absorb Damage using Endurance: base1 % (base2 End per 1 HP)
Note: Both base1 and base2 need to be divided by 100 for actually value
* Implemented SE_HealthTransfer 509
Implemented
SE_Health_Transfer 509
'life burn'
Consume base2 % of Hit Points to Damage for base % of Hit Points
Can be used for heal
Act of Valor
* Implemented SPA 515,516,518,496
Implemented
SE_AC_Avoidance_Max_Percent 515
SE_AC_Mitigation_Max_Percent 516
SE_Attack_Accuracy_Max_Percent 518
Above are stackable defense and offensive mods
SE_Critical_Melee_Damage_Mod_Max 496 - This is a non stackable melee critical modifier
* Implemented SPA 503 , 505
SE_Melee_Damage_Position_Mod 503
define SE_Damage_Taken_Position_Mod 505
SPA 503 increase/decreases melee damage by percent base1 based on your position base2 0=back 1=front
SPA 504 increase/decreases melee damage taken by percent base1 based on your position base2 0=back 1=front
* Implemented 467,468
Implemented
SE_DS_Mitigation_Amount 467
SE_DS_Mitigation_Percentage 468
Reduce incoming DS by amt or percentage. base1 is value, if a reduction is desired it should be set to negative for both.
* Fixes
Formula fixes
* Update spdat.h
Added spa descriptions.
* Implemented SPA 469, 470
Implemented
SE_Chance_Best_in_Spell_Grp 469 Chance to cast highest scribed spell within a spell group. All base2 spells share roll chance, only 1 cast.
SE_Trigger_Best_in_Spell_Grp 470
Chance to cast highest scribed spell within a spell group. Each spell has own chance.
Additional Changes:
Rewrote TrySpellTrigger function used for SPA 340 since it incorporates SPA 469. Improved code so that chance of spell being triggered should be more accurate statistically.
* Implemented SPA 474, 494
Implemented
SE_Pet_Crit_Melee_Damage_Pct_Owner 474 - Gives pets a critical melee damage modifier from the owner
SE_Pet_Add_Atk 494 - Gives pet a ATK bonus from the owner
Fixed SE_PetMeleeMitigation 397 - The bonus was not being calculated
* Implemented SPA 465,477,478
Implemented
SE_PC_Pet_AE_Rampage 465
Chance for pet to AE rampage with a damage modifier
SE_Hatelist_To_Top_Index 477
Chance to be put on top of RAMPAGE list
SE_Hatelist_To_Tail_Index 478
Chance to be put on bottom of RAMPAGE list
* Implemented
Implemented
SE_Fearstun 502
Stun with a max level limit. Normal stun restrictions don't apply. Base1 duration, base2 PC duration, max is level limit
SE_TwinCastBlocker 39
Previously unused spell effect that is now used on live. Simply, if this effect is present in a spell then the spell can not be twin cast.
* Implemented SPA 483
Implemented
Fc_Spell_Damage_Pct_IncomingPC 483
- Focus effect that modifies iby percent incoming spell damage on the target.
Base1= min Base2= max. Final percent is random between max and min each time focus is applied from a spell cast.
Note: Written to stack with similar functioning focus SPA 269 SE_FcSpellVulnerability.
* Implemented SPA 484
Implemented
SE_Fc_Spell_Damage_Amt_IncomingPC 484 // focus effect that modifies incoming spell damage by flat amount. Consider it a debuff that adds damage to incoming spells. Positive value to add additional damage.
* Implemented SPA 481, 485,486,512
Implemented
SE_Fc_Cast_Spell_On_Land 481
Focus effect that is checked when a spell is cast on a target, if target has this focus effect and all limiting criteria are met, then the target will cast a spell as specified by the focus. Can be given a roll chance for success. Base1=Chance, Base2=Spellid
Note: This spell has a huge amount of potential applications. See 'Alliance' type spells on live. (ie live spell 50247)
Implemented associated focus limits seen in live spells.
SE_Ff_CasterClass 485
- Caster of spell on target with a focus effect that is checked by incoming spells must be specified class or classes.
SE_Ff_Same_Caster 486 -Caster of spell on target with a focus effect that is checked by incoming spells 0=Must be different caster 1=Must be same caster
The following is an associated effect seen with SPA 481
SE_Proc_Timer_Modifier 512
This provides a way to rate limit the amount of spell triggers generated by SPA 481. For example after 1 successful spell trigger no additional spells can be triggered for 1.5 seconds. Ie. Base=1 and Base2 1500.
Written in a flexible format to allow scaling of multiple different buffs with this effect at same time.
* Stacking fixes for new effects
Stacking fixes for new effects.
* merge with upstream master
merge and update up spdat.h
* Update spdat.h
* Fix for bolt spell targeting self if target zone/died while casting.
Fix for bolt spell targeting self if target zone/died while casting. Despite the name being "ST_TargetOptional", this target type is reserved for projectile spells which all require a target, thus should be treated like any other targeted spell.