Fix to hued addons with moving crates
Partial revert, discussed w/Krrios of rev 88
This commit is contained in:
parent
b7bf6146c8
commit
b7ea90d3af
2 changed files with 76 additions and 12 deletions
|
|
@ -511,13 +511,35 @@ namespace Server.Multis
|
||||||
if ( !addon.Deleted )
|
if ( !addon.Deleted )
|
||||||
{
|
{
|
||||||
Item deed = null;
|
Item deed = null;
|
||||||
|
bool retainDeedHue = false; //if the items aren't hued but the deed itself is
|
||||||
|
int hue = 0;
|
||||||
|
|
||||||
if ( addon is IAddon )
|
if( addon is IAddon )
|
||||||
|
{
|
||||||
deed = ((IAddon)addon).Deed;
|
deed = ((IAddon)addon).Deed;
|
||||||
|
|
||||||
|
if( addon is BaseAddon && ((BaseAddon)addon).RetainDeedHue) //There are things that are IAddon which aren't BaseAddon
|
||||||
|
{
|
||||||
|
BaseAddon ba = (BaseAddon)addon;
|
||||||
|
retainDeedHue = true;
|
||||||
|
|
||||||
|
for( int i = 0; hue == 0 && i < ba.Components.Count; ++i )
|
||||||
|
{
|
||||||
|
AddonComponent c = ba.Components[i];
|
||||||
|
|
||||||
|
if( c.Hue != 0 )
|
||||||
|
hue = c.Hue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( deed != null )
|
if ( deed != null )
|
||||||
{
|
{
|
||||||
addon.Delete();
|
addon.Delete();
|
||||||
|
|
||||||
|
if( retainDeedHue )
|
||||||
|
deed.Hue = hue;
|
||||||
|
|
||||||
DropToMovingCrate( deed );
|
DropToMovingCrate( deed );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -673,9 +695,30 @@ namespace Server.Multis
|
||||||
if ( item is StrongBox )
|
if ( item is StrongBox )
|
||||||
relocateItem = ((StrongBox)item).ConvertToStandardContainer();
|
relocateItem = ((StrongBox)item).ConvertToStandardContainer();
|
||||||
|
|
||||||
if ( item is IAddon )
|
if( item is IAddon )
|
||||||
{
|
{
|
||||||
relocateItem = ((IAddon)item).Deed;
|
Item deed = ((IAddon)item).Deed;
|
||||||
|
bool retainDeedHue = false; //if the items aren't hued but the deed itself is
|
||||||
|
int hue = 0;
|
||||||
|
|
||||||
|
if( item is BaseAddon && ((BaseAddon)item).RetainDeedHue ) //There are things that are IAddon which aren't BaseAddon
|
||||||
|
{
|
||||||
|
BaseAddon ba = (BaseAddon)item;
|
||||||
|
retainDeedHue = true;
|
||||||
|
|
||||||
|
for( int i = 0; hue == 0 && i < ba.Components.Count; ++i )
|
||||||
|
{
|
||||||
|
AddonComponent c = ba.Components[i];
|
||||||
|
|
||||||
|
if( c.Hue != 0 )
|
||||||
|
hue = c.Hue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( deed != null && retainDeedHue )
|
||||||
|
deed.Hue = hue;
|
||||||
|
|
||||||
|
relocateItem = deed;
|
||||||
item.Delete();
|
item.Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2937,12 +2980,33 @@ namespace Server.Multis
|
||||||
|
|
||||||
if ( item != null )
|
if ( item != null )
|
||||||
{
|
{
|
||||||
if ( !item.Deleted && item is IAddon )
|
if( !item.Deleted && item is IAddon )
|
||||||
{
|
{
|
||||||
Item deed = ((IAddon)item).Deed;
|
|
||||||
|
|
||||||
if ( deed != null )
|
Item deed = ((IAddon)item).Deed;
|
||||||
|
bool retainDeedHue = false; //if the items aren't hued but the deed itself is
|
||||||
|
int hue = 0;
|
||||||
|
|
||||||
|
if( item is BaseAddon && ((BaseAddon)item).RetainDeedHue ) //There are things that are IAddon which aren't BaseAddon
|
||||||
|
{
|
||||||
|
BaseAddon ba = (BaseAddon)item;
|
||||||
|
retainDeedHue = true;
|
||||||
|
|
||||||
|
for( int j = 0; hue == 0 && j < ba.Components.Count; ++j )
|
||||||
|
{
|
||||||
|
AddonComponent c = ba.Components[j];
|
||||||
|
|
||||||
|
if( c.Hue != 0 )
|
||||||
|
hue = c.Hue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( deed != null )
|
||||||
|
{
|
||||||
|
if( retainDeedHue )
|
||||||
|
deed.Hue = hue;
|
||||||
deed.MoveToWorld( item.Location, item.Map );
|
deed.MoveToWorld( item.Location, item.Map );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item.Delete();
|
item.Delete();
|
||||||
|
|
|
||||||
|
|
@ -2912,7 +2912,7 @@ namespace Server
|
||||||
|
|
||||||
ns.Send( p );
|
ns.Send( p );
|
||||||
|
|
||||||
if ( sendOPLUpdate )
|
if ( ObjectPropertyList.Enabled )
|
||||||
ns.Send( OPLPacket );
|
ns.Send( OPLPacket );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2949,7 +2949,7 @@ namespace Server
|
||||||
|
|
||||||
ns.Send( p );
|
ns.Send( p );
|
||||||
|
|
||||||
if ( sendOPLUpdate )
|
if ( ObjectPropertyList.Enabled )
|
||||||
ns.Send( OPLPacket );
|
ns.Send( OPLPacket );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2987,7 +2987,7 @@ namespace Server
|
||||||
|
|
||||||
ns.Send( p );
|
ns.Send( p );
|
||||||
|
|
||||||
if ( sendOPLUpdate )
|
if ( ObjectPropertyList.Enabled )
|
||||||
ns.Send( OPLPacket );
|
ns.Send( OPLPacket );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3016,7 +3016,7 @@ namespace Server
|
||||||
|
|
||||||
if ( m.CanSee( this ) && m.InRange( worldLoc, GetUpdateRange( m ) ) ) {
|
if ( m.CanSee( this ) && m.InRange( worldLoc, GetUpdateRange( m ) ) ) {
|
||||||
if ( m_Parent == null ) {
|
if ( m_Parent == null ) {
|
||||||
SendInfoTo( state, sendOPLUpdate );
|
SendInfoTo( state, ObjectPropertyList.Enabled );
|
||||||
} else {
|
} else {
|
||||||
if ( p == null ) {
|
if ( p == null ) {
|
||||||
if ( m_Parent is Item ) {
|
if ( m_Parent is Item ) {
|
||||||
|
|
@ -3030,7 +3030,7 @@ namespace Server
|
||||||
|
|
||||||
state.Send( p );
|
state.Send( p );
|
||||||
|
|
||||||
if ( sendOPLUpdate ) {
|
if ( ObjectPropertyList.Enabled ) {
|
||||||
state.Send( OPLPacket );
|
state.Send( OPLPacket );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3065,7 +3065,7 @@ namespace Server
|
||||||
|
|
||||||
state.Send( p );
|
state.Send( p );
|
||||||
|
|
||||||
if ( sendOPLUpdate )
|
if ( ObjectPropertyList.Enabled )
|
||||||
state.Send( OPLPacket );
|
state.Send( OPLPacket );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue