Commit graph

2824 commits

Author SHA1 Message Date
Kamron Batman
f16bce60e6
fix: Fixes ethics causing crashes when not used (#1972) 2024-10-15 17:02:11 -07:00
Bohica
b7316a5bd6
fix: Fixes Occlo so it uses the actual addon when decorations are generated. (#1970) 2024-10-08 13:08:23 -07:00
Kamron Batman
b9d63e4160
fix: Fixes ObjectPropertyList double return issue (#1969)
- Fixes double return issue with object property list that is causing corruption.
- Adds DEBUG_ARRAYPOOL define constant which will crash on double return or invalid return scenarios.

> [!IMPORTANT]
> **Developer Notes**
> STArrayPool rented arrays **MUST NOT** be returned **ONLY ONCE** otherwise there will be corruption from double-use.
> Use `DEBUG_ARRAYPOOL` to test potential broken STArrayPool use cases.

> [!NOTE]
> **Why can't I enable the debug all the time?**
> Other than the fact that it will crash due to bad code, the actual tracking system is highly detrimental/problematic for performance and memory consumption by creating objects that have a stack trace.
2024-10-07 21:21:21 -07:00
Derek Gooding
4b3b2839c6
chore(docs): Adds UnmanagedDataReader & BinaryFileReader documentation (#1968) 2024-10-01 17:07:51 -07:00
Joshua Kappers
766b46bcc1
fix: Actions on gump crash when Runebook has no entries (#1964) 2024-09-27 10:17:22 -07:00
Kamron Batman
9d9a5220d1
fix: Fixes PlayerZombies null pointer exception (#1963) 2024-09-25 15:27:42 -07:00
Kamron Batman
4e2fcee7a2
chore(deps): Bumps xunit to 2.9.1 and CommunityToolkit.HighPerformance to 8.3.2 (#1962) 2024-09-25 10:27:37 -07:00
Joshua Kappers
3a3c651b85
fix: Ensure server listing address is used when set in config (#1960) 2024-09-21 22:34:56 -07:00
Kamron Batman
2a7aa1905b
fix: Fixes edge cases with the network packet loop (#1959) 2024-09-19 18:25:30 -07:00
Kamron Batman
e0fcde885c
fix: Fixes networking issues (#1958)
### Summary
- Puts back `EventSink.SocketConnect`.
- Reverts networking change to push the networking to a separate thread.
- Reverts changes to the firewall by removing the firewall queue.
- Fixes listeners not shutting down with the server.
- Fixes race condition causing connections to get stuck even after they are disposed.

> [!NOTE]
> **Developer Note**
> Networking has been reverted back to using the main thread instead of a background thread. This alleviated complexity and the requirement for concurrent queues all over the place.
2024-09-19 16:54:49 -07:00
Kamron Batman
97c53e656e
chore (README.md): Update .NET requirements in README (#1956) 2024-09-18 09:17:16 -07:00
Kamron Batman
113a6b1f7c
fix (README.md): Fixes the supported operating systems. (#1955) 2024-09-18 09:13:47 -07:00
Derek Gooding
893441f74a
feat: Adds partial keyword to the Server.Utility class (#1954) 2024-09-16 08:57:24 -07:00
Kamron Batman
465d3c8187
feat: Upgrades serialization v4 (Threaded Heap Serialization) (#1947)
### Summary

- `GenericEntityPersistence` is now a type of `GenericPersistence`. This allows developers to serialize both entities and non-entities in the same system. 🎉
- Each `SerializationThreadWorker` now allocates 1MB of heap for serialization _permanently_. If more memory is needed, that thread will double it's memory, not to exceed increments of 64MB.
- Several bugs with serialization introduced with the pure MMF implementation have been fixed.
- `BinaryFileReader` has been added back. 🎉
- Adds `world.useMultithreadedSaves` to allow disabling threaded saves.

> [!IMPORTANT]
> **Developer Note**
> The split file serialization has been deprecated and is no longer used. We have effectively gone back to the same file writing we had before the pure MMF implementation.
2024-09-14 09:57:43 -07:00
Derek Gooding
aaac0c596c
chore: Remove some of the warnings/suggestions that can't be fixed due to legacy (#1953) 2024-09-13 12:22:50 -07:00
Kamron Batman
8639ed2210
fix: Fixes bad password with SHA1/SHA2 (#1952) 2024-09-12 17:20:44 -07:00
Kamron Batman
257825dc23
fix: Removes invalidation of tickcount and now in core (#1949) 2024-09-11 22:51:02 -07:00
Kamron Batman
2e6ddcd31a
fix: Removes profiling. Streamlines core tick count. (#1948)
### Summary
- Removes `Profiling` - Recommend using Visual Studio Performance Profiler,  [dotnet-trace](https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-trace) or [JetBrains dotTrace](https://www.jetbrains.com/profiler/)
- Cleans up the core tick count, sampling, etc.
2024-09-11 00:55:18 -07:00
Kamron Batman
65bc264402
fix: Fixes Advanced Search crash (#1946) 2024-09-08 20:37:51 -07:00
Kamron Batman
47e16a03fe
feat: Moves network related events to UOContent using code generation (#1945)
### Summary
- Moves `CharacterCreated` event to UOContent using code generated event _CharacterCreatedEvent_.
- Moves `TargetByResourceMacro` event to UOContent using code generated event _TargetByResourceMacro_.
- Moves `GameLogin` event to UOContent using code generated event _GameLoginEvent_.
- Moves `ServerList` event to UOContent using code generated event _ServerListEvent_.
- Streamlines ProfessionInfo


> [!IMPORTANT]
> **Developer Note**
> Custom scripts that use any of these event sinks will need to be updated to use the new code generated events.
2024-09-06 16:57:10 -07:00
Kamron Batman
4110556e89
chore(deps): Bumps dependencies (#1944) 2024-09-05 21:24:47 -07:00
Guyute
95cd8749a3
feat: Adds PlayerDeathEvent and CreatureDeathEvent using code generated events (#1927)
### Summary
- Adds [Code Generated Events](https://github.com/modernuo/CodeGeneratedEvents)
- Removes EventSink.PlayerDeath
- Adds `PlayerDeathEvent` and `CreatureDeathEvent` using code generated events

> [!Important]
> **Developer Note**
> Use `[OnEvent(nameof(PlayerMobile.PlayerDeathEvent))]` instead of `EventSink.PlayerDeath` delegate
> Check this commit for examples of how to use this.
2024-09-05 21:23:03 -07:00
Reetus
d5984ce058
fix: Releasing a Talisman summon deletes your character (#1940) 2024-08-23 09:04:14 -07:00
Reetus
8a41d84239
fix: Fixes Velocity property not displaying value (#1938) 2024-08-20 21:15:12 -07:00
Kamron Batman
35342e296e
fix: Fixes targeting ground with spells (#1937) 2024-08-20 15:51:33 -07:00
Reetus
4c5947e654
fix: Fixes missing CopyTo in FixHtmlFormattable (#1935) 2024-08-19 07:09:07 -07:00
Kamron Batman
36c373b76a
fix: Fixes spell targeting (#1934) 2024-08-17 22:45:08 -07:00
dependabot[bot]
25dfb5cca3
chore(deps): Bump Nerdbank.GitVersioning from 3.6.139 to 3.6.141 (#1928) 2024-08-17 15:16:36 -07:00
Kamron Batman
eecb2f0f44
fix: Fixes focus cliloc name (#1933) 2024-08-15 19:13:09 -07:00
Kamron Batman
779dc9d37b
fix: Fixes null crash on deserialization for Champs (#1932) 2024-08-15 18:55:31 -07:00
Kamron Batman
1272be7be9
fix: Fixes damage scale for AOS (#1931) 2024-08-15 18:32:25 -07:00
Reetus
71a68126da
fix: Set VendorItem Valid AfterDeserialize (#1930) 2024-08-15 07:25:38 -07:00
Guyute
b612c443df
fix: Migrate BOD gumps to DynamicGump (#1926) 2024-08-13 08:13:20 -07:00
Kamron Batman
16d7961dc9
fix: Fixes profession indexing (#1929) 2024-08-12 23:13:53 -07:00
Reetus
29265c2fed
fix: GateTravel sends you to the origin map (#1924) 2024-08-12 09:27:23 -07:00
Kamron Batman
03a6edad45
fix: Disconnect if user tries to give themselves too much skill (#1922) 2024-08-10 12:49:39 -07:00
Guyute
a86601ffea
feat: Restyle young player gumps (#1917)
## Summary

Restyles the three "young player" gumps: `YoungDungeonWarningGump` `YoungDeathNoticeGump` and `RenounceYoungGump` to a cleaner, more consistent style I made up.

### Screenshots
<img width="265" alt="image" src="https://github.com/user-attachments/assets/bd872023-71eb-44ba-8421-f721df1198a5">
<br \>
This one is spooky because they're dead.
<br \>
<img width="443" alt="image" src="https://github.com/user-attachments/assets/ec3729a1-026f-4edc-aaf0-9b353283117b">
<br \>
<img width="467" alt="image" src="https://github.com/user-attachments/assets/f7821050-22dd-408a-a519-789bba813df2">
2024-08-10 11:06:18 -07:00
Guyute
12a75d3c9c
fix: Convert house gumps to static/dynamic gumps (#1912) 2024-08-10 10:56:19 -07:00
Stefano Merotta
aa68d96807
fix: Removes redundant code in GumpSystem (#1921) 2024-08-10 10:20:34 -07:00
Guyute
76bdc7ac02
fix: Moves pricing from PricedHealer to BaseHealer - Combines Res Gumps (#1920) 2024-08-10 10:16:47 -07:00
Stefano Merotta
6fe01488ef
fix: Fix NetStateGumps and other Gumps cleanup (#1919) 2024-08-10 09:57:28 -07:00
Kamron Batman
8282b00ca2
feat: Moves gumps out of the core (#1916)
> [!Important]
> **Developer Note**
> This code change will **completely move gumps out of the core**


### Summary

- Adds `GetGumps()` convenience which exposes methods to Find/Close/Send multiple gumps. This helper is a performance improvement by eliminating the Dictionary<Player, List> lookup for gumps.
2024-08-09 19:07:32 -07:00
Guyute
40d99f6d1c
fix: Converts WhoGump to DynamicGump (#1918) 2024-08-09 18:50:21 -07:00
Guyute
873c25bbc5
fix: Migrates RunebookGump to DynamicGump (#1915) 2024-08-09 18:39:36 -07:00
Kamron Batman
0ce58deefb
fix: Fixes seed issues. (#1914) 2024-08-08 22:31:39 -07:00
Kamron Batman
9b7fea2c20
fix: Magic NPCs now use spell range (#1870)
### Summary
- Drastically streamlines the spell targeting by collapsing the target classes into a single `SpellTarget<T>` class.
- Moves TargetRange to the spell itself so it can be used by MageAI.
- Changes range check in MageAI to use TargetRange. This should fix target acquisition bugs
2024-08-08 07:05:27 -07:00
mdodkins
91e37fb8d4
fix: Hair and facial hair "teleporting" when mobile dies several times (#1901)
### Summary

* Added World.NewVirtual for creating virtual serial numbers
* Reserved range 0x7EEEEEEE to 0x7FFFFFFF for virtual serials
* Hair and Facial hair (for mobiles) now use virtual serials instead of FakeSerial() functions
* Consolidated virtual hair to a single `VirtualHairInfo` class.

Corpse hair and facial hair now persists across save/load and hair and facial hair no longer teleport to newest corpse.
2024-08-07 20:10:23 -07:00
Guyute
883d873c1c
fix: Converts ConfirmHouseResizeGump, ConfirmDryDockGump to StaticGump (#1909)
### Summary
- Converts ConfirmHouseResizeGump, ConfirmDryDockGump to StaticGump
- ConfirmHouseResizeGump now supports the account gold system.
2024-08-07 16:54:45 -07:00
Guyute
f5c980b28f
fix: Converts AddGump (for [add <searchString>) to DynamicGump (#1911) 2024-08-07 09:40:58 -07:00
Guyute
82c81b2adf
fix: Converts ReportMurdererGump to static Gump (#1910) 2024-08-07 09:12:13 -07:00