* 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
* 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
* 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
* Change child assemblies to AnyCPU. Ace.Server still x64
* Fix LifestonedConverter for > ushort.MaxValue weenies
* Allow DbContexts to be configured/used by other applications
* Make GetWeenie public
* SQLWriters should take IDictionary, not Dictionary
* Include links
* Keep tests as x64
* Add DotDuration to Spell table
* Rename Emote Table script slightly
* Change to Double
* Update Duration to use DotDuration if it has a value
* Add DotDuration to SQL Writer
* Change Enchantment Registry to use composite key instead of a primary key id column
* Add a few indexes
* Remove indexes added in #1206
* Rescaffold
* Switch EnableSensitiveDataLogging in AuthDbContext to a specific EFAUTHDEBUG variable
* Update changelog.md
* WIP and bad WIP at that. Just transferring work from one computing device to another.
* Initial summoning functionality
* Remove debugging line
* Implement 45 second duration and remove unneeded monster spell casting dependency
* Add comment containing PCAP file providing good examples and first pass at implementing cool down timer enchantment
* Fix merge lint
* Add summoning features back in that were removed.
* Cleanup
* Bringing up-to-date with latest build
* Latest WIP build
* Moving SQL to ACE-World-16PY-Patches
* Adding some aggro methods
* Latest build / refactoring
* Adding skill usage requirements
* Adding combat pets drawing aggro
* Adding elemental damage types
* Adding message for summoning installation
* Some minor adjustments
* Cleanup
* Fixing callchain for SetEphemeralValues
* Refactored generators, improved RNG selection formula
* Removing calls to PerfTimer
* .
* Fixing AL/RL display in character info panel
* Fixing issue with MaxCreate
* Adding check for GeneratorDisabled status, cleaning up EventManager
* Removing int cast for latest version of DB
* Adding Void magic
* Mapping BaseRangeConstant to SpellBase
* Fixing DoTs to only use the top layer enchantments
* Added limiter for switching between war and void magic
In the cache.bin, this is probably a bool. It is 1 for every instance found.
If/When we understand what this flag might have meant, we can re-add. However, given that it was always true in cache.bin, that is unlikely.
Furthermore, in GDLE, this bit was always set to 1 on write, and always masked off on read.
If an int/float had a default of '0', it was removed.
If a nullable had adefault of NULL, it was removed.
This isn't needed for EF.
This cleans up the SQL.
This also helps make sure our sql writers are generating the full INSERT query to recreate a record.
Columns id and guid have been combined into a single guid column.
This requires that every landblock instance be provided with a valid unique guid.
In the old code, you could provide an instance that would have an auto generated id (column) and a guid of 0. ACE would then see the guid is 0 and would use the following:
GuidManager.NewDynamicGuid();
In the cache.bin, every landblock instance has a unique id.
If we need to add the ability to have dynamically guid'd landblockinstances, this is an easy thing to add back.
There were 3 redundant values which were basically flags indicating if it's associated vital was actually used.
However, in the cache.bin, any time a vital was present, it's associated flag was also set to 1. This is basically redundant.
We can simplify this as follows. If the Vital != 0, it gets applied. If the Vital == 0, it doesn't get applied.
I suspect they may have wanted the flag so they could leave a vital value in the db, but just have it disabled. We don't need this.
This allows us to not have to add all 8 records found in the cache.bin.
Instead, we only have to add the records that actually modify something. This new bool basically indicates if it was the first 4 or the last 4 or the fixed 8 found in the cache.bin
We were relying on the order of the recipe_componet records to remain the same, but this isn't gauranteed unless we provide a zIndex.
Instead of adding a zIndex to the Recipe_Component table, we can just put the static values in the base Recipe table.