* Cleaned up properties sent on appraisal and login
* Fix missing [Ephemeral] attributes
* Balanced enum balances, reduced multiple attributes to a single line
* Fixed single spacing issue.
* Fixed bad speeling
* Add EncumbranceVal to [AssessmentProperty]
* Add EncumbranceVal to [SendOnLogin]
---------
Co-authored-by: OptimShi <26606778+OptimShi@users.noreply.github.com>
This will at least somewhat improve performance, as confirmed through microbenchmark testing.
const fields are replaced with literal values in the Assembly's IL code, while static readonly fields may be optimized by the JIT, and is not guaranteed to happen. const fields may also lend themselves to stronger optimizations at runtime.
* Wire up GameEventMagicPurgeBadEnchantments
According to PCAPs GameEventMagicPurgeBadEnchantments was sent to clients for players with Enduring Enchantment augmentation.
Client has slightly different check in CEnchantmentRegistry::PurgeBadEnchantmentList versus CEnchantmentRegistry::PurgeEnchantmentList
```cpp
if ( v4->data._smod.type & 0x2000000 || v4->data._duration == -1.0 )
```
vs
```cpp
if ( v4->data._duration == -1.0 )
```
* Update EnchantmentManager.cs
A large number of spells that the DAT has marked beneficial do not also have their StatModType currently set with that same flag.
This changes makes them match.
* Update Enchantment.cs
* fix some client memory leaks with appraisals
* fix some client memory leaks from incorrectly ordered hashtables on login
* more organization for PackableHashTable vs. deprecated PHashTable
* fully deprecate PHashTable -- 0 references now
* refactor RestrictionDB.Write() to use PackableHashTable common method. trying to ensure all places in the system that send PackableHashTables go through common method, for consistency and tracing
* cleanup
* finding more references
* update HouseAccess to match client
* add full explanation where numBuckets=89 originates from
* update code for empty collection in AllegianceHierarchy for reference
* 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
* adding GearMaxHealth to jewelry roll
* matching CalculateManaRate, ItemMaxMana, Spellcraft, ItemSkill/LevelLimit activation requirement, and ItemDifficulty / arcane lore requirement up to eor data
* adding magical dinnerware
* adding dinnerware damage "mutations"
* revert previous commit, add WeaponProfile to Dinnerware appraisal, as per retail
* add flasksimple to spell selection code dynamic
* updating ItemManaCost
* updates to maxBaseMana / maxSpellMana
* no message
* add support for faction monsters not waking up from same-faction players running nearby
* prevent faction monsters from attacking same-factioned players after a non-factioned player wakes them up
* adding support for CombatPets not attacking mobs belonging to the same factions as their pet owner
* add support for RetaliateTargets -- see comment for this member var for full explanation
* reversing 1 check -- note that with the current logic, if Faction1Bits is set after the monster spawns in, RetaliateTargets will not be used, effectively reverting to the 'free for all' after a monster initially wakes up
* adding /setproperty PropertyInt.Faction1Bits extra logic for easier / more consistent testing after spawning
* adding RetaliateTargets logic for nearby faction monsters being alerted
* moving attack -> retaliate entry logic to not require sleeping mob
Co-authored-by: Ty Conner <tyconner@itcproductions.com>
* Fix for sentinel/envoy access level
* Update PropertyBool.cs
* enable IsSentinel flag for Envoy users, because IsEnvoy is not recognized by the client
Co-authored-by: Ty Conner <tyconner@itcproductions.com>
* Added Colo FP to Enum and RecipeManager
* Updated Armor Imbue Recipes
* Added Misc ItemType of FP salvage to be used for Tinkering
* Restricted Misc Types to certain WCIDs
* Changed so appraisal info doesn't show 100 uses
* 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.
* fix corpses spawning frozen in mid-air
* updating fields
* /movetome admin command
* adding /showvelocity dev command
* only applies to player killers
* ensure corpse items are saved correctly if server crashes
* adding support for passive pets
* adding passive pets casting spells on owner
* accounting for structure-less PetDevices for passive pets
* adding static heartbeat
* prevent monster initial snap forward when they start moving
* latest build
* - no more passive pet armies
- passive pet automatically despawns if player is > 1 landblock distance away
- deprecated passive pet spellbooks. new SlowTick method has full support for heartbeat emotes / PetCastSpellOnOwner
* removing comment
* updating PetCastSpellOnOwner
* removing TryCastSpells - use EmoteManager.PetCastSpellOnOwner instead
Co-authored-by: Ty Conner <tyconner@itcproductions.com>