* [Rule] Classic Harm Touch Formula
Pre 2007 Harm Touch was handled differently with base harm Touch ( Ability or 2 ranks aa) and Improved Harm Touch AA. It was converted into 10 ranks of Harm Touch -
http://www.tski.co.jp/baldio/patch/20071113.html
It was further refined in 2008 to have a DoT component.
http://www.tski.co.jp/baldio/patch/20080709.html
This rule focuses on the pre 2007 version and allows the damage to properly scale
* Updated logic
* Update per feedback.
MendAlwaysSucceedValue allows you to adjust skill at which mend will always succeed its check.
SneakAlwaysSucceedOver100 allows sneak to always succeed when over skill 100 (Higher skill increases the movement speed).
* [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
* [Rule] Snare Override Movement Bonus
This rule allows snare to override any movement bonuses.
RULE_BOOL(Spells, AllowSnareEffectsOverrideBonus, false, "Enabling will allow snares to override any speed bonuses the entity may have. Default: False")
Default: False
* Rule name
---------
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
* [Rule] Legacy Compute Defense against modern agi based defense.
In new code, AGI becomes a large contributor to avoidance at low levels, since AGI isn't capped by Level but Defense is A scale factor is implemented for PCs to reduce the effect of AGI at low levels. This isn't applied to NPCs since they can be easily controlled via the Database.
* `snake_case`
---------
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
- Haste should only provide a max of a 2 s reduction to Backstab cooldown, but it seems that while BackstabReuseTimer can be reduced, there is another timer (repop on the button) that is controlling the actual cooldown. I'm not sure how this is implemented, but it is impacted by spell haste (including bard v2 and v3), but not worn haste. This code applies an adjustment to backstab accuracy to compensate for this so that Rogue DPS doesn't significantly outclass other classes.
* [Bug] Raid Targets should not be Blindable as this will break all spell casting AI.
* Add rule.
---------
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
* [Feature] Add SE_IncreaseArchery and rules to tune archery
* Adjustments per comments, also added to the tune system.
* Update bonuses.cpp
---------
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
* [Bug Fix] Accuracy, Avoidance and Atk adjustments
- Applied Fix to Attack Power contributing too much to damage.
Rule of thumb for era was 100 attack = 10% damage increase, but I was seeing closer to 15-25%. Found that in the GetATK() function it seemed to be double counting attack power from items and spells, so I applied a /2 to remedy this.
* Update Tune
# Description
The client appears to generate its own taunt message, so I removed the additional server side generated message.
## Type of change
Please delete options that are not relevant.
- [x] New feature (non-breaking change which adds functionality)
- [ ] This change requires a documentation update
# Testing
Clients tested: RoF2
# Checklist
- [x] I have tested my changes
- [x] I have performed a self-review of my code. Ensuring variables, functions and methods are named in a human-readable way, comments are added only where naming of variables, functions and methods can't give enough context.
- [ ] I have made corresponding changes to the documentation (if applicable, if not delete this line)
- [x] I own the changes of my code and take responsibility for the potential issues that occur
## Type of change
Please delete options that are not relevant.
- [x] Bug fix (non-breaking change which fixes an issue)
# Checklist:
- [x] I have performed a self-review of my code. Ensuring variables, functions and methods are named in a human-readable way, comments are added only where naming of variables, functions and methods can't give enough context.
- [x] I have tested my changes
- [x] I own the changes of my code take responsibilities for the potential issues that occur
* [LUA] Add Zone and Language Constants
This will add Zone:
```lua
if eq.get_zone_id() == Zone.Qeynos then
foo()
end
```
It will also add Language:
```lua
if e.language == Language.ElderElvish and e.other:GetLanguageSkill(Language.ElderElvish) >= 100 then
e.self:Say("You know my language!", Language.ElderElvish);
end
```
These changes should help avoid magic numbers in quests and aide in readability without the need for -- comments to clarify.
* Adjust to lower case
* [Bug] Radiant/Ebon Crystals should only extract to 1000
Creating a stack larger than 1000 can cause potential dupe issues further down the stream if other tasks are performed on the stack.
* Use stacksize instead
---------
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
* DRAFT - Classic Taunt (Pre 2006) style of taunt
RULE: ClassicTauntSystem
Completely seperate logic for each system. Could potentially be re-writte to be more inline but there are a good bit of minor differences.
* Consolidate Logic
Still needs in-game testing
* Feedback Request
* Updates per feedback
# Corpse Overhaul
Changelog:
- Player corpses now have two timers, one specific to the rezability of the corpse and the other to cover the overall rot timer of the player corpse.
- The rezability timer is based on the online presence of the player/account and is not affected by being offline.
- The rot timer is not affected by offline/online status and will count to the rot status of the corpse.
- Corpses can be rezzed multiple times, however only the first rez that yeilds returned xp will be counted. Not other rez will return any xp. This allows for a "Poor mans COTH" as was used many times in the early eras.
- All Corpse class private/protected member variables are all now prefixed with m_
- Added Corpses logging category along with many debug logs
- Removed LoadCharacterCorpseData
- Removed LoadCharacterCorpseEntity
- Added LoadCharacterCorpse(const CharacterCorpsesRepository::CharacterCorpses, const glm::vec4 &position) which simplifies areas of consumption and reduces double queries from removing LoadCharacterCorpseData and replacing LoadCharacterCorpseEntity
- All parameters that were prefixed with in_ have been dropped
- Removed two queries from CheckIsOwnerOnline and have it query the world's CLE by account_id since that is how live works
- Regenerated repository character_corpses
- Cleaned up many list iterators to use range based for loops
- Rate limit Corpse::Process m_is_rezzable with a 1 second check timer
- General code cleanup
- Added a Server Up check to bury all corpses in instances to prevent lost corpses if an instance is released during server down. This facilitates player recovery via shadowrest or priests of luclin.
This PR also now fixes a long standing issue with HasItem performance in our script plugins. It is significantly faster, we will need to coordinate quest changes and comms with operators.
```lua
if ($client->HasItemOnCorpse($item_id)) {
return 1;
}
```
```lua
--corpse
if self:HasItemOnCorpse(itemid) then
return true
end
```
Testing Completed:
- Create a Corpse
- Standard rezzing
- Ghetto Coth (No Extra XP)
- Rezzing after graveyard move
- Divine Rez works as intended
- No XP Rez (Corpse Call) does not give XP
- Corpse Burying
- Cross Instance Graveyard Corpse movement/Rezzing
- DZ End/Quit Corpse Movement/Rezzing
- Server Shutdown/Reinit DZ Corpse Movement/Rezzing
---------
Co-authored-by: Akkadius <akkadius1@gmail.com>
* [Bug Fix] Player Taunt Distance
Previously this was not regulated on the server side and allowed players to exploit situations where the client did not enforce Z distance checks.
Rule Name: MaximumTauntDistance
Rule Default: 150
Calculation is Rule Squared
* remove `this`
* [Bug Fix] Limit pet taunt distance
Previously this was not regulated and allowed players to exploit unlimited taunt distance.
Rule Name: PetTauntRange
Rule Default: 150
Calculation is Rule Squared.
* Remove `this`
* DRAFT: [Feature] Add Lore Item Trade Error
I had lots of feedback from players to add feedback when doing player to player trades to include what items were causing the trade block.
I quickly added this check, however if multiple lore items are being traded, this will only output the first. So far it has worked well, but not sure if we want to:
- Expand this to list all lore items in the trade.
- Enable this by default and do not provide a rule?
* Credit to @KinglyKrab for the assist on making this output a list.
Ruled this off but enabled by default.
* [Rules] Classic Spell Data SPA Calc variability
When using lucy imports of older more classic data, they lack the limit values which provides Focus Random Effectiveness.
Example:
Bazu Plauge (6472) went from a 40 limit to 0 limit on the 2006 lucy import.
Lucy does have limit value data, but it appears the affected SPAs sony handled in source vs in spell data.
* Requested Changes
* [Bug Fix] Rampage Number of Hits Limit
Rampage should Hit 1-2 times (Primary / Secondary) should not be Triple/Quadable
* requested name convention changes
* [Rule] Classic Tracking Skillups
Rule: TrackingAutoRefreshSkillUps
Default: True
Disable rule to prevent skillups from happening on auto refresh of tracking window.
* typo
* [Bug Fix] Increase percision on CheckDoubleAttack.
On DA Checks where class was a non skill based DA Attacker (Bard or BST with granted DA) The DA check was too steep and should not have been dividing by 500 but rather 100. Also adjusted logic percision to use floats so loss of data does not occur.
* logging var names update
* Update attack.cpp
---------
Co-authored-by: Alex King <89047260+Kinglykrab@users.noreply.github.com>
I have been informed that this was proven to be false, but the AA is pretty useless without some adjustment.
Adding this as a rule to allow server owners to adjust as needed.
Update Sinister Strikes
tapatalk.com/groups/monklybusiness43508/leksikon-s-half-assed-guide-to-monkly-aas-oow-incl-t510-s20.html?sid=a9c7745f287f3e89301c960c20f33248
Sinister Strikes:
19 Delay weapon -- Gives a 5 damage bonus to all hits
20 Delay weapon -- Gives a 6 damage bonus to all hits
24 Delay weapon -- Gives a 7 damage bonus to all hits
Given Quarm hammer with maxed non-GoD AAs:
0.7 HPS offhand = 4.9 DPS increase.
* [Bug] Limit MeleeMitigationEffect to defender if only client.
* Fix MeleeMitigation to properly Add (Substract due to negative values).
* defender fix
* [Rule] Allow GMs to silently summon
Disable to silently summon players with #summon.
Converted SummonPC to a MessageString
* Implementing an automatic detection of gm hidden mode and silent summoning.
* [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::
When using `UseLiveBlockedMessage` rule, bard will get massively spammed when doing aoe songs that are blocked. Not sure it is resonable to try and filter out all stacking messages from songs, but rather just block bards as a whole. I can not think of many cases where bards care of songs land or not when using this rule.
* [Crash Fix] Character Creation Class/Race out of Range.
Known bug to crash the world server from character creation.
You can send a packet with a manual race or class entry below 0 or above 255 will cause world crash.
* Requested changes
* Compile fixes and logging change
* Fixed compile issues
Rule: BashTwoHanderUseShoulderAC
Default: False
Allows server operators to choose if they want two handed bash to utilize the shoulder armor or not.
Rule: BashACBonusDivisor
Default: 25.0
Allows adjustment for bash AC value contributions. Lower to increase damage.
* [Rule] Over taunt hate rule
Rule to add additional hate when taunt succeeds. This can help tune snap aggro on taunt classes. Only works when taunt succeeds and not already top hate.
* Requested Adjustments
* Add default +1 on rule
* Revert back to 0 default on rule with +1 on the standard formula
* formatting fix
Ignoring the Z axis allows you to attack mobs on target from wildly inappropriate Z distances.
Example you can pull mobs to the cy in bothunder from the towers you are under when many 1000's of units away by Z only.
* [Bug Fix] TGB - Added logic to stop bard errors on group songs.
Occasionally bards would get an error when singing songs with another group member targetted.
* Logic Fix
* Fixed missing brace
* [Rule] Classic Triple Attack
Classic Triple attack pre-dates skill based triple attack.
Originally it was only for a few classes but was expanded to Warrior, Monks, Berserkers and finally rangers for Dragons of Norrath. After which it was converted to a skill based feature.
These were innate starting level 60 and had a flat % to trigger.
* Requested Changes
* [Bug Fix] depop charm pet and detach debuffs on evac.
This will depop charm pets and deteach debuffs to prevent some social aggro issues and exploitable conditions with charming and pulling a mob across the zone with no aggro concerns.
* Added Rules
* [Rule] RequireMnemonicRetention for Spells 9-12 Rule
Rule is default false to maintain current server setup.
Enabling will require clients to have the required ranks of Mnemonic Retention in order to cast.
This is a stopgap as on live, the buttons are not even available to use. This will mimic the functionality but denying the cast.
* Change to default true
* Cleanup Logic - Thank you @KinglyKrab
* To aggressive on the cleanup
* True != true
* fix duplicated rule after rebase.
* [Bug Fix] Clear Ramp when Clearing hate
When clearing a client from the hatelist, also clear them from ramp
* Add additional calls missed
* requested changes
* extra tabs
* [Bug Fix] Swiming rules adjustment and racial
We need to set all character default swiming prior to working through racials. Added racial check so if starting rule is over the racial default it will not over-ride the starting rule.
* operator fix
* [Feature] Legacy Manaburn Rule
Enabling this rule allows the legacy style Manaburn and LifeBurn early 2003 and earlier.
* Requested Changes
* Requested Change
* [Rules] PC Push and NPCtoNPC Push
Added knobs to increase/decrease push for players/clients by percentage.
Added toggle to enable or disable (disabled by default) NPCtoNPC push (2013 patch)
* Requested Changes
* Fix build errors
* [Rule] Classic Invite Requires Target
Default is false, when enabled, group invites will require a hard target to invite.
`/invite charname` will no longer function when enabled.
* Updates including raid errors
* String Suggestion
* [Bug Fix] Harm Touch Unholy Disc Type
Added an small if block in the ResistSpell() function to set the correct resist type, disease,when HT is casted while the Unholy Disc is up.
* Remove Extra Space
* [Bug Fix] Vampiric Embrace Fixes
Fixed the difference of procs for Vampiric Embrace between Necros and Shadow Knights.
* Space
* Cleanup
* Update spdat.h
---------
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
* [Bug Fix] Dire Charm Reset
Added Druid and Necro Dire Charm to Failure Check
* [Rule] RequireMnemonicRetention for Spells 9-12 Rule
Rule is default false to maintain current server setup.
Enabling will require clients to have the required ranks of Mnemonic Retention in order to cast.
This is a stopgap as on live, the buttons are not even available to use. This will mimic the functionality but denying the cast.
* Revert "[Rule] RequireMnemonicRetention for Spells 9-12 Rule"
This reverts commit c65e86223d.
* [Feature] Legacy Fizzle Code
Enabling UseLegacyFizzleCode will enable the legacy fizzle code system.
New fizzle codes modeled on extensive testing in 2001/2002 (thank you druid's grove and graffe)
* requested adjustments
* Requested Changes
* [Bug Fix] Class Trainers dont steal your money!
Class trainers log an error when you have reached your max train in the specific skill. They will continue to "Appear" to eat money and practices however they will be returned on logout/in or zone.
* Remove un-needed logic due to legacy code.
* more cleanup
* [Rule] Mounts will wear off on zone
Allows server admins to toggle if they want to prevent players from retaining mounts on zone. false is default to maintain current feature set.
* Added Date for mount zoning added