# 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
* [Bug Fix] DI/Death Pact Fix
Divine Intervention/Death Pact buffs were always fading the moment a person dropped below 16% regardless if it healed or not. It will now only fade if it succeeds in healing, and it will only check to heal when a person drops below 16%
* Requested Updates
If aggro goes negative, it resets the counter from the max value, so having a negative aggro will give massive aggro. This was happening with bane attacks from monk special abilities being set to -5 damage so they don't hit, and since aggro was set to the same, instant aggro from monks on bane mobs. Set all monk special attacks to generate 0 aggro if it is less than 0.
* [Feature] Break Trader if moved
If the player moves while in trader mode, it will end the mode, this prevents traders from moving outside of the trader area after entering trader mode.
* Fix spacing
* [Tuning] FD and Sneak break when cast on adjustments.
Rules added:
RULE_REAL(Spells, BreakFeignDeathWhenCastOn, 50.0) // percentage that fd will break when you resist a spell
RULE_REAL(Spells, BreakSneakWhenCastOn, 2.0) // percentage that sneak will break when you resist a spell
* Fix default value to be peq default and spacing
* [Bug] NPC Faction War prevention.
This should assist with prevention of NPC Faction waring. I have been using this code on my server for over 5 years with no coredumps or any noted bugs. This was brought up as users have reported a few events where they can trigger NPC's to fight each other.
* Correct a few entries to line up with updated code.
* Re-add missing RestTimer functionality
* [Feature] Add adjustability for AERampage Range.
This functionality is needed for fights like Ture to be accurate, where their ramp range was 101% of their melee safe range.
Example in lua of utilizing this scripting
```
e.self:SetSpecialAbilityParam(SpecialAbility.area_rampage,8,101;
```
* Updates to address comments
* [Bug] Escape item name in trader audit.
Quick fix to escape the item names in Trader Audit.
* Update trading.cpp
---------
Co-authored-by: Alex King <89047260+Kinglykrab@users.noreply.github.com>
This was preventing anything other than 0 or 1 to be passed, but per the current design, the see_invis can be anything from 0 to MAX 25499, which can give you level 254 invis. See design notes in Mob::GetSeeInvisibleLevelFromNPCStat.
* [Rule] Add ManaOnDeath and EndurOnDeath
This rule allows death to fully fill Mana or Endurance.
* Updates rules to live-like
* Adjust rule names to be more descriptive of their intent, remove else cases
Co-authored-by: Akkadius <akkadius1@gmail.com>
* [Quest API] Adjustment to depop_all function.
Adjustment to depop_all function to no longer require an owner under all conditions (allows use inside encounters)
* More simplification
* Update questmgr.cpp
Co-authored-by: Alex King <89047260+Kinglykrab@users.noreply.github.com>
* [Feature] AA Cap Limit
Will force unused AA points to the cap if they exceed the cap. Will also force AA Percentage to 0%. NOTE: The variable, UnusedAAPointCap, should NOT be lowered once implemented without first checking the DB for how many Unused AAs people have. The next time they gain any EXP, it WILL drop them to cap. Also, PCs should be given warning prior to this patch going to Live, to ensure they have a chance to spend any AAs above the cap, else they will lose them.
* Fix formatting on strings
* Fixes
* Change ConvertArray to fmt
* Fix formating and >= 0 aa_cap per review
* [Bug] Loot Drop Randomization adjustment
Loot Table currently favors the first item in the loot drop. This should help remove that condition.
Code by Ailia.
* snake_case
Co-authored-by: Akkadius <akkadius1@gmail.com>