diff --git a/Server/EventSink.cs b/Server/EventSink.cs index d30788f..1da2667 100644 --- a/Server/EventSink.cs +++ b/Server/EventSink.cs @@ -171,6 +171,8 @@ namespace Server public delegate void ValidVendorSellEventHandler(ValidVendorSellEventArgs e); + public delegate void PlayerVendorSaleEventHandler(PlayerVendorSaleEventArgs e); + public delegate void CorpseLootEventHandler(CorpseLootEventArgs e); public delegate void RepairItemEventHandler(RepairItemEventArgs e); @@ -1521,6 +1523,29 @@ namespace Server } } + // Player-vendor purchases raise no other EventSink. This fires at the committed sale in + // PlayerVendorBuyGump.OnResponse, where buyer, vendor owner, item, price, and commission + // are all in scope -- the data the bridge's cheat-detection feed needs. + public class PlayerVendorSaleEventArgs : EventArgs + { + public Mobile Buyer { get; set; } + public Mobile Vendor { get; set; } + public Mobile Owner { get; set; } + public Item Item { get; set; } + public int Price { get; set; } + public int Commission { get; set; } + + public PlayerVendorSaleEventArgs(Mobile buyer, Mobile vendor, Mobile owner, Item item, int price, int commission) + { + Buyer = buyer; + Vendor = vendor; + Owner = owner; + Item = item; + Price = price; + Commission = commission; + } + } + public class CorpseLootEventArgs : EventArgs { public Mobile Mobile { get; set; } @@ -1771,6 +1796,7 @@ namespace Server public static event TameCreatureEventHandler TameCreature; public static event ValidVendorPurchaseEventHandler ValidVendorPurchase; public static event ValidVendorSellEventHandler ValidVendorSell; + public static event PlayerVendorSaleEventHandler PlayerVendorSale; public static event CorpseLootEventHandler CorpseLoot; public static event RepairItemEventHandler RepairItem; public static event AlterItemEventHandler AlterItem; @@ -2416,6 +2442,14 @@ namespace Server } } + public static void InvokePlayerVendorSale(PlayerVendorSaleEventArgs e) + { + if (PlayerVendorSale != null) + { + PlayerVendorSale(e); + } + } + public static void InvokeCorpseLoot(CorpseLootEventArgs e) { if (CorpseLoot != null)