Repository navigation
Update properties sent to client - #4258
Merged
Merged
Conversation
gmriggs
reviewed
Dec 24, 2024
gmriggs
reviewed
Dec 24, 2024
gmriggs
reviewed
Dec 24, 2024
gmriggs
reviewed
Dec 24, 2024
gmriggs
reviewed
Dec 24, 2024
gmriggs
reviewed
Dec 24, 2024
gmriggs
reviewed
Dec 24, 2024
gmriggs
previously approved these changes
Dec 24, 2024
gmriggs
previously approved these changes
Dec 24, 2024
LtRipley36706
previously approved these changes
Dec 29, 2024
rkroska
reviewed
Dec 31, 2024
gmriggs
approved these changes
Dec 31, 2024
WarlockHolmez
pushed a commit
to daralet-ac/ACE
that referenced
this pull request
Oct 7, 2026
Appraisals used to send every property not marked [ServerOnly] (a blocklist). They now send only properties tagged [AssessmentProperty], and the login PlayerDescription Int64 properties now use [SendOnLogin] like the other property types (an allowlist), matching upstream ACEmulator#4258. - Retail properties take upstream's pcap-verified [AssessmentProperty] / [SendOnLogin] tags. [Ephemeral] (persistence) is unchanged. - The fork's own properties keep their current behavior: those that were sent before are tagged [AssessmentProperty], those marked [ServerOnly] are not. - WeaponOffense, SlayerDamageBonus and ProcSpellRate stay tagged because this server's custom appraisal text reads them. - AppraisalHasAllowedWielder/Activator and the DefaultLocked unlocked state now read from the object, since those properties are no longer in the appraisal property bags (upstream ACEmulator#4474, ACEmulator#4475). - Remove ClientProperties, ServerOnlyProperties and ServerOnlyAttribute. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LDKfgWjXHL7EKz8foWrd5e
WarlockHolmez
added a commit
to daralet-ac/ACE
that referenced
this pull request
Oct 7, 2026
…m upstream ACE (#1284) * Port exploit and security fixes from upstream ACEmulator/ACE - Block allegiance mansion recall / house actions targeting an Apartment (HouseType < Villa let Apartment through) - upstream ACEmulator#4330 - Clear a stale IsAdvocate flag left over from a former Advocate account access level; command access trusts this flag - upstream ACEmulator#4502 - Make acehelp lookups case-insensitive, stop the console command thread when stdin is closed instead of spinning, and tidy reportbug/house-select - upstream ACEmulator#4502 - Re-check split amount with <= after the walk/pickup delay so a stack that shrank meanwhile cannot be split down to a zero-size source - upstream ACEmulator#4434 - Refuse attribute transfers while wielding items with attribute, vital or skill wield requirements; refuse lowering a skill below an equipped item's Training requirement; enforce ItemSpecializedOnly - upstream ACEmulator#4476 - Treat invincible creatures (not just players) as immune to spell projectiles, DoTs and spells; fix inverted fellow_kt_killer check; pass isWeaponSpell for new enchantment layers; trigger exhaustion when stamina hits 0 from an overdraw - upstream ACEmulator#4501 - Restrict GetMultiplicativeMod(PropertyFloat) to Float single-stat enchantments so other stat keys can't collide - upstream ACEmulator#4479 - Hotspots skip dead creatures and Health-type hotspots kill at 0 health - upstream ACEmulator#4408 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LDKfgWjXHL7EKz8foWrd5e * Port bug fixes from upstream ACEmulator/ACE - Cache ServerVersion.AutoDetect per connection string instead of opening an extra connection for every DbContext - upstream ACEmulator#4256 - Deep-copy book pages when creating a biota from a weenie, and return the correct index from AddPage - upstream ACEmulator#4470 - GDLE/Lifestoned adapter fixes (IID requirements, spellbook dedupe, emote Display/Amount64, empty cookbooks, IgnoreAuthor) - upstream ACEmulator#4470, ACEmulator#4471 - TimedEventHistory divide-by-zero / shortest event, drain the serialized shard queue fully, avoid double Destroy on generator reset - upstream ACEmulator#4471 - Treat Fellow* spells missing the FellowshipSpell flag (Kiss of the Grave, etc.) as fellowship spells - upstream ACEmulator#4425 - Null guards for Position distance helpers, fellowship full update and body part tables; WeenieClassName no longer throws for deleted weenies - upstream ACEmulator#4341, ACEmulator#4303 - Force log off characters stuck logging out for 15 minutes (only if that same player object is still online) - upstream ACEmulator#4175 - Support negative HealOverTime spells (record damage, harm message, death) - upstream ACEmulator#4304 - Set the slumlord ParentLink when loading a house and show purchase items as paid for owned houses - upstream ACEmulator#4238 - Fix jump_is_allowed null/creature check - upstream ACEmulator#4473 - Dat reader ends on the last sector via the next-sector pointer rather than size < blockSize - upstream ACEmulator#4275 - Give failure message shows the amount offered, not the whole stack - upstream ACEmulator#4486 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LDKfgWjXHL7EKz8foWrd5e * Port HighRes DAT support from upstream ACEmulator/ACE Adds the allow_highres_dat server property (off by default). When enabled, the DDD interrogation advertises highres support (product id 0x4) so clients use client_highres.dat, and the server validates and patches the client's highres iterations like the other dats. The highres dat shares DatFileId 1 with the portal dat, so interrogation responses are now told apart by DatFileType ("HiFi"). Clients reporting 0 iterations for the cell or highres dat are no longer treated as missing iterations (cells are downloaded on demand; a client without the highres dat just doesn't use it). Highres iterations are only built at startup when client_highres.dat is present in the dat folder. Upstream ACEmulator#4469 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LDKfgWjXHL7EKz8foWrd5e * Port property allowlist for client appraisal/login from upstream Appraisals used to send every property not marked [ServerOnly] (a blocklist). They now send only properties tagged [AssessmentProperty], and the login PlayerDescription Int64 properties now use [SendOnLogin] like the other property types (an allowlist), matching upstream ACEmulator#4258. - Retail properties take upstream's pcap-verified [AssessmentProperty] / [SendOnLogin] tags. [Ephemeral] (persistence) is unchanged. - The fork's own properties keep their current behavior: those that were sent before are tagged [AssessmentProperty], those marked [ServerOnly] are not. - WeaponOffense, SlayerDamageBonus and ProcSpellRate stay tagged because this server's custom appraisal text reads them. - AppraisalHasAllowedWielder/Activator and the DefaultLocked unlocked state now read from the object, since those properties are no longer in the appraisal property bags (upstream ACEmulator#4474, ACEmulator#4475). - Remove ClientProperties, ServerOnlyProperties and ServerOnlyAttribute. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LDKfgWjXHL7EKz8foWrd5e --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or 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
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.
Cleans up the properties sent to the client on login and appraisal. Based on PCaps and client information, an adjustment of these properties has been done to ensure ACE is not sending more information than the client needs. Fixes some potential exploits in addition to wasted bandwidth.
Removed some unused property attributes and functions while it was being cleaned up. All properties are now what formerly were tagged
[ServerOnly]unless they have the[SendOnLogin]or[AssessmentProperty].Note that many properties are no longer tagged with the AssessmentProperty attribute because they are, and always have been, sent elsewhere (e.g. in the CreateObject message or in Armor or Weapon profile part of the AppraiseInfo message)
This will undoubtedly "break" some post-retail plugins/tools that were using some of this extended data, but the client should never have had this data to begin with.