fix: Uses client bug to make addon containers work (#776)
* Fixes tooltip for container furniture so it works. This doesn't work on ClassicUO. * Fixes double click opening container furniture by double clicking the addon component. * Fixes the context menu not showing up sometimes on the addon piece. Note: You cannot drop anything into the addon component since it might be far away and it is not a real container. There is no easy fix for this without building an entire custom container class for addons or changing how items drag/drop entirely. Requires closing/opening container gumps as it switches from one component to another that shares the same content. Also requires sharing tooltips, invalidated properties, process delta changes, etc. Not worth the effort. <img width="444" alt="Screen_Shot_2021-09-12_at_4 27 28_PM" src="https://user-images.githubusercontent.com/3953314/133011752-c5b54cf2-2c7b-45c0-882d-0365ef62e686.png">
This commit is contained in:
parent
52dacec68f
commit
c5e35c9b69
8 changed files with 104 additions and 86 deletions
|
|
@ -763,7 +763,7 @@ namespace Server.Items
|
|||
{
|
||||
if (Core.ML)
|
||||
{
|
||||
if (ParentsContain<BankBox>()) // Root Parent is the Mobile. Parent could be another containter.
|
||||
if (ParentsContain<BankBox>()) // Root Parent is the Mobile. Parent could be another container.
|
||||
{
|
||||
list.Add(
|
||||
1073841, // Contents: ~1_COUNT~/~2_MAXCOUNT~ items, ~3_WEIGHT~ stones
|
||||
|
|
|
|||
|
|
@ -1332,39 +1332,36 @@ namespace Server
|
|||
|
||||
if (openers != null)
|
||||
{
|
||||
lock (openers)
|
||||
for (var i = 0; i < openers.Count; ++i)
|
||||
{
|
||||
for (var i = 0; i < openers.Count; ++i)
|
||||
var mob = openers[i];
|
||||
|
||||
var range = GetUpdateRange(mob);
|
||||
|
||||
if (mob.Map != map || !mob.InRange(worldLoc, range))
|
||||
{
|
||||
var mob = openers[i];
|
||||
|
||||
var range = GetUpdateRange(mob);
|
||||
|
||||
if (mob.Map != map || !mob.InRange(worldLoc, range))
|
||||
openers.RemoveAt(i--);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mob == rootParent || mob == tradeRecip)
|
||||
{
|
||||
openers.RemoveAt(i--);
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
||||
var ns = mob.NetState;
|
||||
|
||||
if (ns != null && mob.CanSee(this))
|
||||
{
|
||||
if (mob == rootParent || mob == tradeRecip)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var ns = mob.NetState;
|
||||
|
||||
if (ns != null && mob.CanSee(this))
|
||||
{
|
||||
ns.SendContainerContentUpdate(this);
|
||||
SendOPLPacketTo(ns);
|
||||
}
|
||||
ns.SendContainerContentUpdate(this);
|
||||
SendOPLPacketTo(ns);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (openers.Count == 0)
|
||||
{
|
||||
contParent.Openers = null;
|
||||
}
|
||||
if (openers.Count == 0)
|
||||
{
|
||||
contParent.Openers = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1719,6 +1716,7 @@ namespace Server
|
|||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private bool GetFlag(ImplFlag flag) => (m_Flags & flag) != 0;
|
||||
|
||||
public BounceInfo GetBounce() => LookupCompactInfo()?.m_Bounce;
|
||||
|
|
@ -2408,7 +2406,7 @@ namespace Server
|
|||
}
|
||||
|
||||
#nullable enable
|
||||
public void InvalidateProperties()
|
||||
public virtual void InvalidateProperties()
|
||||
{
|
||||
if (!ObjectPropertyList.Enabled)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue