ITLongwell / mondains-legacy

Automatically exported from code.google.com/p/mondains-legacy
0 stars 0 forks source link

Statue Maker Duplication Glitch #79

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. Place a statue maker but do not hit sculpt
2. Log out
3. Log back in and find your statue, as well as a duplicated statue maker
in your inventory

What is the expected output? What do you see instead?
Deletion of the statue maker when you place a statue.

What version of the product are you using?
Latest

Original issue reported on code.google.com by Garland...@gmail.com on 3 May 2009 at 7:21

GoogleCodeExporter commented 8 years ago
Hello Garland,

I found solution for this issue and test it. It works fine now.
What happens here is that when you click CharacterStatueMaker and choose a 
point in 
house, the Maker in your backpack will be deleted and Statue will be put on the 
ground. When cancel is chosen in anyways and gump is closed by right click, 
stone 
will return to your backpack. As the same way, if the player log out the game, 
Statue will stay where it is, but there will be no StatueMaker in your backpack 
(because we made it to be deleted). Same thing goes on when you demolish the 
Statue. 
The statue which is Deed will work as the same, no duplicates will be on deeds. 
With 
this, duplication will be prevented. At least, this is the way that i found and 
works without error, actually you can control if the player is online or not, 
or you 
can apply the time and activity based control system in HousePlacementTool.cs 
to 
this, but this way was easier for me. I hope it will be useful for you.

CharacterStatue.cs
-------------------

find :

from.SendGump( new CharacterStatueGump( m_Maker, statue ) );

add this below :

m_Maker.Delete(); //Fix

CharacterStatueGump.cs
----------------------

find :

public override void OnResponse( NetState state, RelayInfo info )       
{

add this below:

            //Fix
            StatueType stype1 = m_Statue.StatueType;
            Item m_statuemaker = new CharacterStatueMaker( stype1 );
            Item m_statuemakerdeed = new CharacterStatueDeed(m_Statue);

            Mobile from = state.Mobile;
            //Fix

find:

            else if ( info.ButtonID == (int) Buttons.Restore )
            {
                if ( m_Maker is CharacterStatueDeed )
                {               
    CharacterStatue backup = ( (CharacterStatueDeed) m_Maker ).Statue;

                    if ( backup != null )
                        m_Statue.Restore( backup );

add this below:

                    //Fix
                        m_Statue.CloneClothes(from);
                        m_Statue.CloneBody(from);
                        m_Statue.InvalidateHues();
                    //Fix

find:

                sendGump = true;

            }
            else
            {
                m_Statue.Delete();

add this below:

                //Fix
                if ( m_Maker is CharacterStatueDeed  )
                {
                from.AddToBackpack( m_statuemakerdeed );
                }  else {
                from.AddToBackpack( m_statuemaker );
                } 
                //Fix

--------------

Original comment by mightyodhinn@gmail.com on 7 May 2009 at 4:39

GoogleCodeExporter commented 8 years ago
Fixed in version 1.08.

Original comment by gje...@gmail.com on 16 May 2009 at 4:56