* adding end of retail mutation filters for melee weapon damage, wield difficulty, damage variance, weapondefense, and weaponoffense
* .
* adding 4eyebiped credit
* adding end of retail mutation filters for missile weapon DamageMod, ElementalDamageBonus, WieldRequirements, and WeaponDefense
* adding end of retail mutation filters for caster weapon ManaConversionMod, ElementalDamageMod, WieldRequirements, and WeaponDefense
* update melee scripts
* resolve merge
* .
* add missing lines
* adding weapon speed mutations
* appending LongDesc with ' of <first spell name w/ descriptor>'
* .
* adding some missing spell descs from magloot logs
* adding SpellDIDs to isMagical casters
* wip
* finalizing
* updating qualityMod
* modifying qualityMod again, to align with data + magloot logs for legendary chests
* ConcurrentDictionary.TryAdd
* updating Clothing spells w/ latest data
* porting *_cantrip_drop_rate server config options to updated cantrips system
* update CreateRandomScroll() to eor chances and ranges
* update
* spacing
* adding retail chance tables for level 8 spell components, adding quality mod to more rolls
* small adjustments
* wip
* adding PetDevice and EncapsulatedSpirit to updated loot system
* adding Aetheria to CreateRandomLootObjects_New w/ chances from magloot logs
* add 2 missing glyphs
* adding Cloaks to updated loot system w/ retail chances for drop rates and ItemMaxLevel
* adding trinkets to jewelry wcid tables w/ eor chances
* adding retail process and chances for rolling for coalesced mana
* adding support for society armor to updated loot system
* updating spell selection tables to eor data
* adding comment for clarity
* updating cantrip selection tables to eor chances / data
* linking to new cantrip tables in updated loot system
* adding GetSpellCode_Dynamic alt method
* adding chance table verification, fixing 2 chance tables
* updating threshold
* adding some missing wcids
* adding ArmorModVsType mutations
* adding TryMutateGearRating() to updated T8 loot
* adding missing logic for TreasureItemType.Cloak
* cleanup
* updating GearRatingCache for latest requirements
* adding GearMaxHealth to jewelry roll
* adding support for GearMaxHealth
* Step 1. Add new adapter classes and models
All classes and objects added are in new namespaces.
This add has 0 interraction on existing ACE code.
This sets the groundwork for Step 2. Moving World DB caching to the new models
* first part of the world entity usage
* almost there
* final part
* update WeenieExtensions
* fix
* merge fixes and improvements
* ACE.Database new code
* it compiles
* InitializePropertyDictionaries
* WOrldDatabaseWithEntityCache cleanup
* ShardDatabaseWithCaching
* ShardDatabase Cleanup
* todo
* cache counts reported in serverstatus
* House InitializePropertyDictionaries
* improve ServerStatus
* BiotaModel change HousePermissions to Dictionary<uint, bool>
* PropertiesAllegiance to dictionary
* BiotaUpdater improvements
* Shard Database Cache Reporting
* More code ported from Step 3
* Remove stub CharacterCache
* Update WorldDatabaseWithEntityCache.cs
* build fixes
* code audit
* Remove non-callback functions from SerializedShardDatabase
* BiotaUpdater progress.. only emote left
* Emotes done... now need to test
* fix
* Burden/Value fix for containers
* fat fingered EncumbranceVal
* add some safety
* Don't cache player biotas for initial PlayerManager load
* fix null spellbook
* Add another null check
This is redundant as the check is also upstream.
This is to prevent an exception in the future if this function is called from another source.
* add in some of the missing spells to drop as scrolls, still need inepts and a few others
* finish off adding all spells to scroll loot
* initial
* adding dispells, summon inepts, calming gaze to scroll loot table
* reverting
* vitals now show base when raised, even if buffed
* update vital MaxValue as well
* adding back in cantrip modifiers
* Adding aetheria
* adjusting surge proc rate, dividing all proc rates up between self/target
* adjusting procs for multistrike
* adding surge proc rate modifier for attack type
* reverting to caster source for item procs (has duration)
* Preliminary fields for Luminance augs
* Additional ratings on appraisal panel
* more ratings restructuring
* updating WorldObject_Weapon
* Adding hooks for all luminance augs
* 1 more note for rating appraisals
* Use PortalDat skill table instead of reflection properties
* Update showstats comments
* remove attributes from Skill enum (Values now come from dat)
* Remove attributes from PropertyAttribute2nd (Values come from dat now)
* Landblock, worldObjects to private and adjacents->Adjacents
* Landblock remove PhysicsObj != null check. No need. 6% CPU savings
* showstats shows [Unusable] for untrained skills which are unusable
* Improve performance of GetWorldObjectsForPhysicsHandling
* Improve Skill IsUsable
* Updating showstats
* Fixing null pointer exception in IsUsable
* VitalTick had duplicate Current != MaxValue checks
* Reduce duplicate calls to HasVitae
* cosmetic
* Avoid duplicate calls to vital.Current and vital.MaxValue in a single fn call
* Rename VitalTick to VitalHeartBeat
* First batch of Character refactor
Characters are now cached with their dbContext, exactly like we do for Biotas. This greatly simplifies the way characters are pulled and saved, and is much more efficient.
Deleting and restoring characters have been migrated to the new SaveCharacter function. There is no need for separate functions to handle those specific tasks.
IsPlussed column added to Character. This removes the need to query the biota to see if we should display the + in front of the name at the character screen.
Character.LastLoginTimestamp, TotalLogins, CharacterOptions1, and CharacterOptions2 are now used. These property types were removed from the ACE.Entity.enum. (the 9000+ types)
Fixed a few places where ChangesDetected was being set insetad of CharacterChangesDetected. There is still more work to do to improve this pattern.
* Player_Client renamed to Player_Character
Plus some cleanup on the way CharacterOptions were get
* Remove duplicate appearance DID properties from WorldObject_Properties
* Removed the duplicate HairTexture DID properties
* Migrate HairTexture from biota property to Character property
* Forgot a CharacterChangesDetected
* Migrate Character specific functions to Player_Character
* Some more Biota wrappers added to BiotaExtensions
* CharacterPropertiesShortcutBar wrapped
* CharacterPropertiesSpellBar migrated to CharacterExtensions
* CharacterPropertiesTitleBook migrated to CharacterExtensions
* CharacterPropertiesFriendList migrated to CharacterExtensions
* drop AccountId from CharacterPropertiesFriendList
* Adding ring spell max range / explode
* Fix typo.
* Add unknown flag.
* Change magic out of range message to match retail.
* Change magic casting range check to match the client.
* SaveBiota major changes
SaveBiota now only updates values in the database that have changed instead of updating every single value.
In addition. SaveBiota detects added and removed linked entities.
* Replace AddBiota(s) with SaveBiota(s)
* This improves the way a few places referenced the biota
* SaveBiota switched to a diff method. Still some work to do
* More notes + fixes
* SaveBiota move GetBiota to before EnterWriteLock
* Added a note about the lock performance
* More summary improvements for BiotaDatabaseLock
* Thread safety added to the SaveBiotas and AddBiotas functions
SavePlayer also switched to use the SaveBiotas bulk action instead of saving each biota individually.
* Biota.Clone() added
* BiotaExtensions cosmetic only
* DbUpdateException fixed
If there were multiple new records in a collection, the first one was attached but with the last new records values.
This would end up resulting in property records with duplicate types id's.
* ReoveBiota check if biota actually exists in db before removal.
* /databasequeueinfo added
* New From-Weenie Containers should not be searching the shard for inventory
* DeveloperDatabaseCommands removed RequiresWorld flag
* Improved DatabasePerfTest results.
* Rename SkillStatus to SkillAdvancementClass
SkillStatus and SkillAdvancementClass are neither the perfect names for what this value represents.
However, the client calls it SkillAdvancementClass. We call it SAC in the database. And GDLE also uses the SAC naming.
I think switching this name helps align ACE with the pdb without adding any additional confusion, meaning, this new name is equally as confusing as the previous, but at last its aligned with the pdb and gdle.
* changelog