* Cache ServerVersion.AutoDetect
Adjusted database connections so that they cache ServerVersion.AutoDetect result on first hit and reuse.
This resolves a current bug that exhausts or times out connections to database.
* Change to dictionary
* Update Source/ACE.Database/DatabaseManager.cs
Co-authored-by: gmriggs <gmriggs@gmail.com>
* Update DatabaseManager.cs
* Update DatabaseManager.cs
---------
Co-authored-by: gmriggs <gmriggs@gmail.com>
Refactored to a non-user configurable string reference, shared across all connection paths
Added AllowUserVariables=True to fix bug introduced as a result of switching to MySqlConnector
* Update EF Nuget Packages
This requires ACE.Adapter and ACE.Database to be updated from .net standard 2.0 to 2.1
* Update ACE.Database.csproj
* fix merge
* 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.
* 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
* More code ported from Step 3
* Update WorldDatabaseWithEntityCache.cs
* GetCachedCookbooks(recpieId) -> GetCookbooksByRecipeId(recpieId)
* build fix
* changelog
* LootGen
* lootgen command
* Updated LootGenTest
* Updated LootGen Droprates to better align with retail droprates. Fixes droprates in clothing
* re-adding shard base
* Fixed & to &&
* Adding Class TestLootGenerationFactory
* Added more stats for weapons in Test Loot Gen
If tier is between 4-6 then a chance for non elemental missile weapon. HarliQ 11/17/19
Tier 6 and up, Only elemental missile weapons are supposed to drop per retail. HarliQ 11/17/19
Added 10% varaiance for Damage Modifier. Full Modifier was rare in retail
Added +19 Elemental (like retail) and readjusted odds (odds are approximate, no hard data). HarliQ 11/17/19
Made MeleeDefenseMod appropiate to Bow Reqs. Data is supports 375 wields should go upto +20, however I left them at +18 for now
Added Class for finding Epics
* CodeCleanup from StyleCop
* Changed name of function for getting MeleeD, removed TestLootGenerationFactory.cs (no need for it now, and may change the way I was going to do it).
* Added melee upto +20 for 375 missile weapons and added 385 to meleeD table
* Found Bug with 315 req weapon not getting elemental damage sometimes. Corrected by changing to wield req and not tier. Also changed ratio for wield drops in tiers. MinReq=30%, MidReq=50%, MaxReq=20%. I may change this once I get more data from Magnus, to reflect the exact ratio from retail
* TestLootGen stats updated, refactoring CreateCaster, added Missile/Magic D bonuses
* updates
* refactoring create caster
* Finalized Code, Added Value to TestLootGen
* StyleCop adustments
* Moved TestLootGen to new Class, moved commands to its own class.
* Removed Partial from ConsoleCommands (forgot to put that back)
* Changes requested by Ripley and gmriggs
* Set all Shard non-zero defaults to zero
There appears to be a bug in EF where, if the models value is not nullab,e and is 0, and the SQL columns default is not 0, the EF.SaveChanges() command will INSERT the record but omit the columns that are 0 value.
The DB will then add default values for the omitted columns.
The entire record is then returned as a result, and EF uses this to update the model, now setting those fields that were 0 to the new non-zero default.
This is the cause for the Jive Turkey emote delay issues.
The next step will be to create an update script that will set existing shard objects to their weenie defaults. The following tables will need to be investigated:
biota_properties_create_list
biota_properties_emote
biota_properties_emote_action
* biota_properties_spell_book probability
* Random Colors in Loot
* WIP with TreasureMaterialColor usage.
* WIP
* More WIP
* Added Material Tables, debug command for testing
* Updated treasure tables for consistent int/uint usage. Added required SQL.
* Set the lootgeneration items to use the new GetMaterial function
* Update changelog
* Removed data from new tables.
* Update changelog.md
* Update 2019-04-20-00-Treasure-Materials.sql
* Update README.md
* Update changelog.md
* Changed lootgen() access level to developer
* Fixed null material type crashing the value function in loot gen
* Random Colors in Loot
* WIP with TreasureMaterialColor usage.
* WIP
* More WIP
* Added Material Tables, debug command for testing
* Updated treasure tables for consistent int/uint usage. Added required SQL.
* Set the lootgeneration items to use the new GetMaterial function
* Update changelog
* Removed data from new tables.
* Update changelog.md
* Update 2019-04-20-00-Treasure-Materials.sql
* Update README.md
* Update changelog.md
* Changed lootgen() access level to developer
* WIP
* SpellbookCache
This uses a dictionary to check if spells are known instead of having to iterate over every record of BiotaPropertiesSpellBook every time a player casts a spell.