21-May-2022

Dynamic market prices and more
ryannathans
Lead Developer

21-May-2022

Greetings Explorers

Pay attention, there have been some changes to the Grand Exchange. The grand exchange market prices are now dynamic, and adjust to trades with a volume weighted formula. Given that bots always charge 10% more than the market average. Now that the market average is no longer static if all trades for an item are from bots, prices will increase until players intervene and undercut the bots.

Edit: The alchemy changes have been rolled back pending an era-accurate source of item values.

Full list of changes in Gielinor:

  • Added the authentic Bronze Pickaxe spawn to the top of Lumbridge gate
  • Added animations to blurite crossbow
    Marked mith crossbow as tradable, added weight and description
  • Removed all alchemy values from config (inauthentic values, seem to have been copied from RS3) - we will probably need to add new overrides as they are discovered, none known at time of writing
    Defined low alchemy value as item value * 0.4 unless override exists in config (authentic)
    Defined high alchemy value as item value * 0.6 unless override exists in config (authentic)
  • Improved the GE database access to use a basic reference counter for the connection that automatically closes the connection when no one is using it anymore
    Grand Exchange now uses the GE sqlite database's price index table to track price changes
    Removed the old price index (confusingly called GrandExchangeDatabase.java)
    Grand Exchange prices are now dynamic and influenced by trades (weighted stepping average price)
    Fixed GE interfaces not loading on login
  • simplified ring of the star sprite teleport dialogue, now tells you if star has been mined
  • Addendum to login/auth improvements to make sure communication info gets parsed
    Only update db fields if they have changed
  • Make sure we don't call exitProcess() if the system is already terminating
  • No longer running ticks in a coroutine, should address apparent lag after server has been running a while
  • Random Events should now spawn correctly
    Fixed an issue that was causing tick event hooks to not fire
  • Refactored equipment.add, fixes bug #420 (blaze it)
  • Introduced modular components for authentication, including the storage backend
    Servers in dev mode now have a no-auth equivalent that allows any user/pass combo without registration
    Added a ban command
    Added a mute command
    Hooked up the mute functionality of the report screen (for pmods+)
    Cleaned up all the now-unused classes for player SQL stuff
    Player SQL stuff now uses entirely prepared statements
    No longer storing PC name, MAC address, serial number as these are inauthentic components of the protocol Packet to be corrected in the future to allow closer compatibility with authentic clients
    Used less threading for the SQL queries/updates as these were causing issues both with the old system and the new
    Updated ::resetpassword and ::setpasswordother commands to use the new server authentication pipeline (to ensure things are always correctly set)
    Refactored the login read event, now handles more exceptions and edge cases
  • man (ID 3224) is now pickpocket-able
  • Fixed the load order of configs with plugins - many configs are now loaded after plugins so that npc/item/object handlers in the old plugin system are set properly
  • Class scanning now distinguishes side effectful plugins from our pure content interfaces
    Server store is now loaded and parsed ***before*** side effectful plugins