Skip to content

Releases: Dawn-of-Light/DOLSharp

1.9.7.3728

20 Apr 06:43
dc2606b
Compare
Choose a tag to compare
Finished BD commander implementation (#209)

* Added Protect, improved target selection

Added handling for the protect ability.

Changed to use GetPlayerOwner() to get the root owner so BD minions use abilities on the player rather than the commander.  This is actually pertinent as one of the BD minions intercepted attacks on the player at one point on live.

* CheckOffensiveSpells() now works with dd+debuff spells

Previously, pets/mobs with dd+debuff spells would cast them once, then not cast again as the target now had the debuff effect.  They will now keep casting spells with a debuff component so long as the spell also does damage.

* Added support for more pet interceptors

Added support for more pet types that at some point intercepted attacks on live.

* GetStyleToUse() no longer spams stun defensive styles

Added a check for defensive styles with stun effects so mobs/pets don't spam styles like Brutalize over and over again, waiting until the effect & immunity fades before using them again.

* Fixed AttackDamageType(), dd+debuff spell scaling

DD+debuff spells now scale both damage and value, as some pets on live scale their debuff value from 10-30% based on level.

AttackDamageType() was returning elemental damage for pets without weapons for some reason, and didn't account for thrust type weapons.  It now uses the base method to return whatever damageType is in the npcTemplate.

* Added BD commander strings

Added more BD commander options to support features which are now implemented.  This file is necessary for BD pets to work, so I created copies in other language directories so at least the options will be available, albeit in the wrong language.

German was the only language with most options defined, so I tried to use it as much as possible.

Strings now use single word language entries whenever possible, so if something has to change it only has to be changed in one place.

* Added pet_bd_commander_taunt_multiplier

This controls the bonus aggro done by a BD commander when set to taunt.

Default value is based on testing.  It's enough to hold aggro consistently against a spec BA dot, but not enough to hold aggro against a spec and base BA dot.

* Added assist code & thorough weapon selection

Since pets need actual inventory items to do the correct damage types, all minions now use the weapons they do on live.

When summoned, minions whose owner doesn't want them assisting start out passive.

* Added methods for assist, commander now defends pets

Addeds support for the commander assist option.

Minions attacked will now trigger the commander defending them rather than just standing there watching.

* Added assist support, defending minions, custom spells

The attack command now only triggers minion attacks if the commander wants them to assist.

Added a new CheckSpells() to hand dread guardian and dread lich spell selection.

Added a method to defend minions when they're attacked.

* Added MinionGetWeapon()

Added a method to give a minion a weapon and have them equip it.

* Implemented missing features

Implemented the assist and empower options.
Changed taunt to more closely resemble live by adding additional aggro to melee attacks, percentage defined by a server property.
Dread Lichs and Dread Guardians now properly allow spell selection, but only if they have pertinent spells.
Implemented weapon selection, creating and using default templates if they're absent in the DB.
Replaced a whole bunch of name string comparisons with an enumerator for commander type.
Added support for Dread Lord and unrecognized pet types.

* Removed testing log entry

1.9.7.3727

18 Apr 22:40
02f26e8
Compare
Choose a tag to compare
Inactive player kick (#208)

* Inactive player kick

Kick idle players after (x) minutes.
Server property KICK_IDLE_PLAYER_STATUS - enable/disable default disabled.
Server property KICK_IDLE_PLAYER_TIME - time in mintures

* Update FriendsManager.cs

1.9.7.3726

13 Apr 12:07
39844b8
Compare
Choose a tag to compare
Added GetTeleportLocation() to create dynamic teleport locations (#207)

Added GetTeleportLocation() to create dynamic teleport locations for things like housing and battlegrounds.

1.9.7.3724

09 Apr 08:03
8aabe3b
Compare
Choose a tag to compare
Added /player levelup command (#204)

Added /player levelup command, which increases the target to the next level or half level.

Also checked for too few argument to prevent exceptions in /player respec

1.9.7.3722

07 Apr 13:44
7d7297e
Compare
Choose a tag to compare
Improved pet spellcasting AI (#202)

* Now checks CastSpell() return values

Now checks CastSpell() return values rather than assuming spell casts always succeed.

Made LivingHasEffect() public static.

* Improved pet spellcasting AI

Changed pets to use sorted spell lists and improved AI.
Pets will now stop melee attacking to cast offensive and defensive spells so long as they aren't being interrupted.
Pets now use instant spells when in melee.
Healing pets now check for heals in two passes to prioritize healing badly injured targets.
Now uses CastSpell() return value rather than assuming spell casts always succeed.
Added default case to CheckDefensiveSpell() which calls the base method.

* Changed Body.CastSpell() to return whether or not the spellcast started

* Multiple fixes

Improved spell sorting.
Changed CastSpell() to return whether or not the spell started casting successfully.
NPCTemplates are now always used to load values not found in the mob db table, so that mobs now get spells/styles/abilities even if the template is set to not replace mob values.

* Fixed CanCastInCombat() and pet spell scaling

CanCastInCombat() always returning true was leading to mobs attacking while casting spells.  It now checks if the spell is instant cast or uninterruptible.
ScaleSpells() had the style snare and attack speed debuffs mixed up, so the snare values and debuff durations were being scaled.

* Changed CastSpell() to return whether the spell cast succeeded

* CastSpell() now returns whether or not the spellcast started

* CastSpell() now returns whether or not the spellcast started

* IsHealing now includes cure poison/disease spells, added TargetHasEffect()

IsHealing now includes cure poison/disease spells so they are properly sorted into healing spell lists.
TargetHasEffect() provides a more readable alternative to checking spell duration and LivingHasEffect()

* Optimized to only re-sort spells if they're scaled

* Changed to use newer ScalePetSpell() function

* Changed to use new ScalePetSpells()

* Removed m_template

m_template was no longer needed, and the ambiguity of it and m_npctemplate led to mistakes.

1.9.7.3720

26 Mar 12:46
c55cb8f
Compare
Choose a tag to compare
Updated pet buff stripping code (#191)

* Added IsBuff and IsHelpful properties

Added IsBuff and IsHelpful properties
Also made IsHarmful and IsHealing more efficient

* Added pet.AddBuffedTarget() call

Added pet.AddBuffedTarget() call to add buffed targets to the pets list

Also changed HasPositiveEffect to use Spell.IsHelpful rather than duplicate code.

* Updated pet buff stripping code

StripOwnerBuffs() had a potential exploit; a player could join a group, be buffed by a groupmate's pet, leave the group, and not have buffs cast by the pet stripped.

Pets now track which targets they've buffed via AddBuffedTarget(GameLiving).  StripOwnerBuffs(owner) has been changed to StripBuffs(), since the owner is no longer needed.

* Updated to use GamePet.StripBuffs()

* Updated to call GamePet.StripBuffs()

1.9.7.3714

26 Mar 11:14
2f2f040
Compare
Choose a tag to compare
Added server property to max crafting skills (#199)

* Added server property to max crafting skills

Added server property to max crafting skills

* Made subSkillCap public

Made subSkillCap public

* Added crafting_max_skills property

Added crafting_max_skills property.

1.9.7.3713

26 Mar 11:00
b69e90d
Compare
Choose a tag to compare
Changed to minimalist submenus and added a lot of destinations (#193)

This changes the mixed text and link messages from the teleporter into minimalist menus with submenus.  Added a bunch of new teleport destinations including towns, dungeons, dragon zones, DF gates, Agramon, etc.

1.9.7.3712

18 Mar 19:01
11ec034
Compare
Choose a tag to compare
Tickets are now automatically given to merchant when bought (#190)

On live, when you buy a ticket, it's immediately given to the merchant to start the trip.  I overloaded OnPlayerBuy() to add that feature.

It checks for "ticket to" in the ticket name, but also checks for "ticket" as the description.  This should make it function for English servers immediately, while giving non-English servers a way to make it work.

1.9.7.3711

18 Mar 08:06
4950b74
Compare
Choose a tag to compare
Improved pet spell scaling (#184)

* Added pet spell scaling to style effects

* Make SortSpells() and SortStyles() public

* Added ScalePetSpell()

Added a method to scale a pet spell, so it's easily accessible in spell handlers and the style processor

* Removed pet spell scaling

Pet scaling no longer needs to be added to specific spell handlers

* Added pet spell scaling

Pet spells are now scaled when the pet is first created, rather than scaling them on each cast.

* Redid pet spell scaling

Code to scale pet spells is not in a method on the pet class.  Spells are scaled as they're added in SummonSpellHandler, but subspells still need to be scaled in SpellHandler.