forked from EQEmu/Server
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
update #1
Merged
Merged
update #1
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Update to SPA148 which acts to block spells buffs that are of lesser value than the current buff for specific effect slots. This effected was preventing detrimental debuffs from being applied that were using same effect slot. This bug affected a very small amount of spell interactions and was fixed on live in 2018. Example being Vishmitars Corruption (6642) being blocked by SteelOak Skin (5352) I confirmed the behavior on live myself. The detrimental buff if in conflict should now be applied instead of blocked.
* [Bug Fix] Fix Auto Login Issue # Notes - We were setting `live_name` value regardless of if we were zoning, causing us to automatically log in to the last character we'd logged in to before. * Remove &
* [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
# Perl - Add `$client->GetDeityBitmask()`. - Add `quest::get_class_bitmask(class_id)`. - Add `quest::get_deity_bitmask(deity_id)`. - Add `quest::get_race_bitmask(race_id)`. # Lua - Add `client:GetDeityBitmask()`. - Add `eq.get_class_bitmask(class_id)`. - Add `eq.get_deity_bitmask(deity_id)`. - Add `eq.get_race_bitmask(race_id)`. # Notes - Allows operators to get the class/deity/race bitmask of a class/deity/race by ID. - Allows operators to get a client's deity bitmask.
* [Bug Fix] Fix Group Leadership # Notes - We were not sending anything to `group_leaders` table if we did not already have an existing row. # Video * Update database.cpp
Minor cleanup from #4054
* [Bug Fix] Fix Luabind Double Class Register # Notes - These two methods were registering to the same class as another method, causing an error seen by @neckkola and others. # Error ``` zone: /home/eqemu/source_jas/libs/luabind/src/class_registry.cpp:151: void luabind::detail::class_registry::add_class(const luabind::type_id&, luabind::detail::class_rep*): Assertion `(m_classes.find(info) == m_classes.end()) && "you are trying to register a class twice"' failed. ``` * Update lua_general.cpp
Since `auto` doesn't deduce references, these will most likely create copies having unintended results.
* Add RegisterBug LuaMod * Add missing header * Add missing header to lua_mod * Fix RegisterBug ignore_default * Fix ignore_default * Fix formatting
* [Feature] Additive Spell Focus from Worn slot with limits New rule (UseAdditiveFocusFromWornSlotWithLimits) allows you place to focus effects in worn slots which will apply the focus additively and perform normal limit checks on those focus. This differs from regular focus behavior that only takes highest value. This is a new version of an old rule "UseAdditiveFocusFromWornSlot" which allowed similar behavior but ignored focus limits. Thus hindering its full potential for itemization. * Update spell_effects.cpp --------- Co-authored-by: Kinglykrab <[email protected]>
SPA 463 SE_SHIELD_TARGET Live description: "Shields your target, taking a percentage of their damage". Only example spell on live is an NPC who uses it during a raid event "Laurion's Song" expansion. SPA 54492 'Guardian Stance' Described as 100% Melee Shielding Example of mechanic. Base value = 70. Caster puts buff on target. Each melee hit Buff Target takes 70% less damage, Buff Caster receives 30% of the melee damage. Added mechanic to cause buff to fade if target or caster are separated by a distance greater than the casting range of the spell. This allows similar mechanics to the /shield ability, without a range removal mechanic it would be too easy to abuse if put on a player spell. *can not confirm live does this currently Can not be cast on self.
* Add LuaMod functions for CommonDamage and HealDamage * Remove extra bracket
# Notes - Bots were reportedly being bypassed by NPCs due to not taking into consideration their raid group's damage. - Must have been missed when bot raids were implemented.
## 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
If a mob has a target when a zone is shutdown it will crash while trying to dispatch EVENT_TARGET_CHANGE when the Mob destructor cleans up hatelists if a quest interface isn't loaded for the type (in this case no bot scripts): zone.exe!fmt::v10::format<std::string const &,char const *>(fmt::v10::basic_format_string<char,std::string const &,char const *> fmt={...}, const std::string & <args_0>={...}, const char * && <args_1>=0x0000000000000000) Line 2835 C++ > zone.exe!QuestParserCollection::GetQIByBotQuest(std::string & filename={...}) Line 1138 C++ zone.exe!QuestParserCollection::BotHasQuestSubLocal(QuestEventID event_id=EVENT_TARGET_CHANGE) Line 353 C++ zone.exe!QuestParserCollection::BotHasQuestSub(QuestEventID event_id=EVENT_TARGET_CHANGE) Line 389 C++ zone.exe!Mob::SetTarget(Mob * mob=0x0000000000000000) Line 5431 C++ zone.exe!NPC::SetTarget(Mob * mob=0x0000000000000000) Line 575 C++ zone.exe!Mob::RemoveFromHateList(Mob * mob=0x000001bfbdc66040) Line 4894 C++ zone.exe!EntityList::RemoveFromTargets(Mob * mob=0x000001bfbdc66040, bool RemoveFromXTargets=true) Line 1530 C++ zone.exe!Mob::~Mob() Line 547 C++ zone.exe!NPC::~NPC() Line 537 C++ zone.exe!NPC::`scalar deleting destructor'(unsigned int) C++ zone.exe!EntityList::RemoveAllMobs() Line 2678 C++ zone.exe!EntityList::Clear() Line 3090 C++ zone.exe!Zone::~Zone() Line 1103 C++ zone.exe!Zone::`scalar deleting destructor'(unsigned int) C++ zone.exe!Zone::Shutdown(bool quiet=false) Line 928 C++ This is caused by the Zone destructor deleting short_name before calling entity_list.Clear(). With an unloaded quest interface BotHasQuestSubLocal calls GetQIByBotQuest which gets a null zone->GetShortName() and crashes while formatting strings. The immediate regressing commit for this crash is because a check for zone->IsLoaded() was removed in 74f1eac with others that were removed to fix a regression by #4025. GetQIByBotQuest and GetQIByPlayerQuest always had this check and should have remained for them. This restores the zone->IsLoaded() checks for GetQIByBotQuest/PlayerQuest. The other functions cannot have that check added until the other issues mentioned in #4149 are addressed.
* [Spells] Add Unblockable Spell Table and Spell Blocked Event - Add `EVENT_SPELL_BLOCKED`, exports `$blocking_spell_id`, `$cast_spell_id`, `$blocking_spell`, and `$cast_spell`. - Add `event_spell_blocked`, exports `e.blocking_spell_id`, `e.cast_spell_id`, `e.blocking_spell`, and `e.cast_spell`. - Adds `spells_unblockable` table with a `spell_id` and `is_unblockable` column. - This table will need to be populated based on known spells that should be unblockable. - This event will allow operators to perform events when spells are blocked. * Cleanup * Cleanup * Update spells.cpp * Remove unused repositories. * Finalize * Update lua_parser_events.cpp
# Notes - Creating bots was failing because were checking for `false` on `Database::CheckUsedName()` in `BotDatabase::QueryNameAvailability`. - `Database::CheckUsedName()` is now `Database::IsNameUsed()` and checks for both bots and character name usages. - We were checking for `false` which was always happening when there were no entries for the supplied name, meaning we were never allowed to create a bot.
* [Bug Fix] HP Bar not updating when applying HP Buff with a heal. Bug: When an HP buff with a heal effect is applied for first time, the heal portion of the effect heals the client and updates HPs currently server side, but client side the HP bar does not register it as a heal thus you display as less than full HP. However due to server thinking your healed, you are unable to correct it by healing. Solution: You need to resend the HP update after buff completed and action packet resent. * add SE_MaxHPChange to fix would result in same bug * [Bug Fix] SPA214 Percent HP change calculation fix Fix how spell and item bonuses using SPA 214 are calculated. Will now be calculated consistent with client. * [Bug Fix] SPA214 SE_MaxHPChange calculation errors corrected. removed code from other PR
…pplied. (#4237) * [Bug Fix] HP Bar not updating when applying HP Buff with a heal. Bug: When an HP buff with a heal effect is applied for first time, the heal portion of the effect heals the client and updates HPs currently server side, but client side the HP bar does not register it as a heal thus you display as less than full HP. However due to server thinking your healed, you are unable to correct it by healing. Solution: You need to resend the HP update after buff completed and action packet resent. * add SE_MaxHPChange to fix would result in same bug
…t corpse name. (#4168) * [Bug Fix] Using %T in channel messages on fresh corpse yields mob/player name, not corpse name. * Undo changes to PC corpse. * Use rename to fix %T usage on client for those in zone * Fix indentation spacing * Update to consolidate Rename as suggested. * Fix for mobs with ` in name * Fix to use GetName() instead of GetCleanName()
* [Quest API] Add AreTasksCompleted() to Perl/Lua. * Bool
* [Feature] Add Optional Return to EVENT_DAMAGE_TAKEN # Description - Allows operators to return a value from `EVENT_DAMAGE_TAKEN` to override the amount of damage taken based on any arbitrary criteria they'd like to apply. * Update attack.cpp
* [Quest API] Add Area-Based Quest Methods to Perl/Lua * Convert some to mob * Fix
* [Bug Fix] Fix Bot Spell Entries IDs Capping at 32,767 * Fix manifest
* [World] Fix slow world bootup bug * Update ip_util.cpp * Add timeout * Update ip_util.cpp * Cross platform timeout
This was causing characters to de-level when gaining experience and was missed as part of #4455
* Add an exception process to assigning item serial numbers to correct a bug in the client hot bar clicky system. * fixed missing guid in replace statement * added snapshot support * upate #show inventory command to protect against crash conditions
* [Code] Add IsCloseToBanker method * Update mob.cpp
* initial work porting this to upstream * more * track complete connect * it sucks to suck * Few optimizations * Move sent_inventory init * Move var * Adjustments --------- Co-authored-by: Akkadius <[email protected]>
* [Feature] Add Rule to Limit Task Update Messages * Update task_client_state.cpp * Update task_client_state.cpp * Change rule
* [Bug Fix] Add RULE_STRING to RuleManager::ResetRules * Update rulesys.cpp
* [Rule] Add a Bandolier Swap Delay Rule * Push * Update exp.cpp
…4466) * [Performance] Move Character Discipline Loading * Push * Final
Current version only looks at your unspent AAs, meaning if you have 2000 spent AAs and 1 unspent AA, your scaling will be based on the 1 unspent AA instead of the 2001 total AA. Here's the original log which is custom code found in the ModernAAScalingEnabled function: [Wed Sep 11 14:10:19 2024] [AA] [ScaleAAXPBasedOnCurrentAATotal] AA Experience Calculation: add_aaxp = 660796, Base Bonus = 256.000000, Half-Life = 64.000000, Minimum Bonus = 1.000000, Earned AA = 1, Calculated Bonus = 253.242371 Custom code looks like this: uint64 totalWithExpMod = add_aaxp; if (RuleB(AA, EnableLogrithmicClasslessAABonus)) { float base_bonus = RuleR(AA, InitialLogrithmicClasslessAABonus); float half_life = RuleR(AA, HalfLifeLogrithmicClasslessAABonus); float min_bon = RuleR(AA, MinimumLogrithmicClasslessAABonus); float bonus_expon = earnedAA / half_life; float bonus = base_bonus * std::pow(0.5, bonus_expon); Log(Logs::General, Logs::AA, "AA Experience Calculation: add_aaxp = %d, Base Bonus = %f, Half-Life = %f, Minimum Bonus = %f, Earned AA = %d, Calculated Bonus = %f", add_aaxp, base_bonus, half_life, min_bon, earnedAA, bonus); if (bonus < min_bon) bonus = min_bon; totalWithExpMod = (uint64)(totalWithExpMod * bonus); } After the fix, the log becomes: [Wed Sep 11 14:10:19 2024] [AA] [ScaleAAXPBasedOnCurrentAATotal] AA Experience Calculation: add_aaxp = 660796, Base Bonus = 256.000000, Half-Life = 64.000000, Minimum Bonus = 1.000000, Earned AA = 1, Calculated Bonus = 253.242371 Which is much closer to the expected behavior
* [Feature] Teach npcs how to cast sacrifice * [Feature] Teach npcs how to cast sacrifice - Remove the hardcoded limit preventing npcs from casting sacrifice. The npc will receive as loot an emerald essence as expected. * Update client.cpp * Update client_packet.cpp * Update spell_effects.cpp * rename Client::SacrificeCaster to Client::sacrifice_caster_id
* [Release] 22.55.2 ### Code * Add IsCloseToBanker method ([#4462](#4462)) @Akkadius 2024-08-27 ### Feature * Add Rule to Limit Task Update Messages ([#4459](#4459)) @Kinglykrab 2024-08-28 * Allow NPCs to cast Sacrifice ([#4470](#4470)) @fuzzlecutter 2024-09-12 * Lazy Load Bank Contents ([#4453](#4453)) @catapultam-habeo 2024-08-27 ### Fixes * Add RULE_STRING to RuleManager::ResetRules ([#4467](#4467)) @Kinglykrab 2024-09-07 * Fix Bard Effect in Migration 9237 ([#4468](#4468)) @Kinglykrab 2024-09-09 * ModernAAScalingEnabled() Calculation Error ([#4469](#4469)) @carolus21rex 2024-09-11 ### Performance * Move Discipline Loading to Client::CompleteConnect() ([#4466](#4466)) @Kinglykrab 2024-09-09 ### Rules * Add a Bandolier Swap Delay Rule ([#4465](#4465)) @Kinglykrab 2024-09-08 * 22.56.0
Fix infinite loop condition when bot encountered
Fix for unlimited charges in bazaar
* gm flag blocks teleport doors with keys from working instead of allowing them to work * correct coniditional logic
* [Bug Fix] Fix Untrained Disciplines in Client::SaveDisciplines() * [Bug Fix] Fix Infinite Loop in Adventure::Finished() (#4473) Fix infinite loop condition when bot encountered * [Bug Fix] Fix Untrained Disciplines in Client::SaveDisciplines() * Change to release --------- Co-authored-by: oddx2k <[email protected]>
) Co-authored-by: morzain <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.