Power Scroll Exchange System - What do you all think?

Power Scroll Exchange System?

  • yes

    Votes: 10 90.9%
  • no

    Votes: 1 9.1%

  • Total voters
    11

kristina

Master
What's up with power scrolls from champs? I know I am not alone on this. Everyone I play with gets 105's..

I haven't even seen a 110 in the past few months from champs. I sure do have a shit ton of 105's though - and me and everyone I play with continue to get 105's. I know there was talk about feeding 105's to pets - or something like that... but what about this?

Develop a system to turn in ten 105's to get a random 110, Ten 110's to get a random 115, Ten 115's to get a random 120.

What are your thoughts, ideas?
 

Syria

Novice
Something needs to change. This is a great idea. The drop rate needs to be increased for everything over 105 but this would at least let the 105's we have become useful. They are worthless now. It's just frustrating waiting a year and a half to get a 120 taming and I know others who have waited longer.
 

Deadpool

Grandmaster
You signature is funny. I get what it implies. COK sounds awfully like something else. Tee hee hee. Coalition Of Kringle. I knew you were into Santa you dirty fiend.
 

kristina

Master
I agree about the whole power scroll thing needing to change. They have to keep us older players interested in champs too. I still need a few 120's that I don't care to buy. It'd be awesome to get a 120 taming.

Another thing I thought of.. if players wanted to they could sell their 105's for a whole lot more than 7k :) Shoot, I've thought about dropping my 105's around Britain bank.

I for one would feel like i accomplished something after spending an hour or two doing a champ and walking away with a 105 tinkering if I knew doing that ten times would get me a 110.

I think the system of turning in 10 for the next highest scroll would help stimulate the economy a bit.
 
Last edited by a moderator:

Rouge

Expert
^^ agreed! There are a riDICULOUS amount of (dare I say worthless?) 105's on the shard. NOT NEARLY ENOUGH 110 Provo PSs! :p
 

Dig'em

Grandmaster
I cannot sell my 105s anymore. I've started stockpiling then in hopes of a change. In my 2 years here I've champed more than most people would think possible, and the best I've ever got to show is a 120 fishing. It's very discouraging, but this is the chance wee take I guess. Love this game, hate my luck [emoji23][emoji23]
 
cool idea!
I used this system on my test server (2010 or 2011 i dont remember exactly) and i found it in my script archives. U can try on ur test server. İt may fail in new uo server versions.

Code:
using System;
using System.Collections;
using Server.Multis;
using Server.Mobiles;
using Server.Network;

namespace Server.Items
{
    [DynamicFliping]
    [Flipable( 0x9A8, 0xE80 )]
    public class PSExchangeBox : BaseContainer
    {
        public override int DefaultGumpID { get { return 0x4B; } }
        public override int DefaultDropSound { get { return 0x42; } }
        private Mobile m_User;
        private bool m_InUse;
        private PowerScroll PSa;
        private PowerScroll PSb;
        private bool m_UseCraft;

        [CommandProperty( AccessLevel.GameMaster )]
        public bool UseCraft
        {
            get{ return m_UseCraft; }
            set
            {
                m_UseCraft = value; if ( m_UseCraft ) Name = "A PowerScroll Exchange Box: For Any PowerScroll Types are Returned"; else Name = "A PowerScroll Exchange Box: Any Non-Craft PowerScroll is Returned";
                InvalidateProperties( );
            }
        }

        [CommandProperty( AccessLevel.GameMaster )]
        public bool InUse
        {
            get{ if (!m_InUse) m_User = null; return m_InUse; }
            set{ m_InUse = value; if (!m_InUse) m_User = null; InvalidateProperties(); }
        }

        public override Rectangle2D Bounds
        {
            get { return new Rectangle2D( 16, 51, 168, 73 ); }
        }

        [Constructable]
        public PSExchangeBox( ) : base( 0x9A8 )
        {
            m_UseCraft = false;
            m_InUse = false;
            m_User = null;
            PSa = null;
            PSb = null;
            Name = "A PowerScroll Exchange Box";
            Weight = 100.0; // TODO: Real weight
        }

        [Constructable]
        public PSExchangeBox( bool usecraft ) : base( 0x9A8 )
        {
            m_UseCraft = usecraft;
            m_InUse = false;
            m_User = null;
            PSa = null;
            PSb = null;
            if (usecraft)
                Name = "A PowerScroll Exchange Box that returns any type of powerscroll";
            else
                Name = "A PowerScroll Exchange Box that does not return craftable powerscrolls";
            Weight = 100.0; // TODO: Real weight
        }

        public PSExchangeBox( Serial serial ) : base( serial )
        {
        }

        public override bool TryDropItem( Mobile from, Item dropped, bool sendFullMessage )
        {
            sendFullMessage = false;

            if ( !from.InRange( this.GetWorldLocation(), 2 ) )
            {
                from.SendMessage("You are to far away to use this item.");
                return false;
            }

            if (m_User != null && m_User != from)
            {
                from.SendMessage("This Box is currently in use by someone else.");
                return false;
            }

            if ( !(dropped is PowerScroll) )
            {
                from.SendMessage("You can only place powerscrolls in this box!");
                return false;
            }

            if (PSa != null && PSb != null)
            {
                from.SendMessage("This already contains two powerscrolls!");
                return false;
            }

            if (PSa == null)
            {
                m_InUse = true;
                m_User = from;
                from.SendMessage( "The first powerscroll has been added." );
                PSa = (PowerScroll)dropped;
                dropped.Delete();
            }
            else
            {
                if ( ( (PowerScroll)dropped ).Value == PSa.Value )
                {

                    if ( PSb == null )
                    {
                        from.SendMessage( "The second powerscroll has been added." );
                        PSb = (PowerScroll)dropped;
                        dropped.Delete( );
                    }
                }
                else
                {
                    from.SendMessage( "The Powerscrolls must both be equal value!" );
                    return false;
                }

            }

            return true;
        }

        public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
        {
            if ( !from.InRange( this.GetWorldLocation(), 2 ) )
            {
                from.SendMessage("You are to far away to use this item.");
                return false;
            }

            if ( m_User != null && m_User != from )
            {
                from.SendMessage("This Box is currently in use by someone else.");
                return false;
            }

            if ( !(item is PowerScroll) )
            {
                from.SendMessage("You can only place powerscrolls in this box!");
                return false;
            }

            if (PSa != null && PSb != null)
            {
                from.SendMessage("This already contains two powerscrolls!");
                return false;
            }

            if (PSa == null)
            {
                m_InUse = true;
                m_User = from;
                from.SendMessage( "The first powerscroll has been added." );
                PSa = (PowerScroll)item;
                item.Delete();
            }
            else
            {
                if ( ( (PowerScroll)item ).Value == PSa.Value )
                {

                    if ( PSb == null )
                    {
                        from.SendMessage( "The second powerscroll has been added." );
                        PSb = (PowerScroll)item;
                        item.Delete( );
                    }
                }
                else
                {
                    from.SendMessage( "The Powerscrolls must both be equal value!" );
                    return false;
                }

            }

            return true;
        }

        public override void OnDoubleClick( Mobile from )
        {
            PowerScroll newps = null;
            if ( from.InRange( this.GetWorldLocation(), 2 ) )
            {
                if (m_User != null && m_User == from)
                {
                    if (PSa != null && PSb == null)
                    {
                        AddToPack(m_User, new PowerScroll(PSa.Skill, PSa.Value));
                        from.SendMessage("The Single PowerScroll you had put in the box has been returned to you.");
                        m_InUse = false;
                        m_User = null;
                        PSa = null;
                        return;
                    }

                    if (PSa != null && PSb != null)
                    {
                        if (!UseCraft)
                            newps = PowerScroll.CreateRandomNoCraft( (int)(PSa.Value - 120), (int)(PSb.Value - 120) );
                        else
                            newps = PowerScroll.CreateRandom( (int)(PSa.Value - 120), (int)(PSb.Value - 120) );
                        // add the new powerscroll
                        AddToPack(m_User, newps);
                        from.SendMessage( "A new random powerscroll has been added to your pack!" );
                        m_InUse = false;
                        m_User = null;
                        PSa = null;
                        PSb = null;
                    }
                }
                else if ( m_User == null )
                {
                    from.SendMessage( "This Box is currently not in use by anyone." );
                    return;
                }
                else
                {
                    from.SendMessage("This Box is already in use by someone else.");
                    return;
                }
            }
            else
            {
                from.SendMessage("You are too far away from this Box to use it.");
                return;
            }
        }

        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );

            writer.Write( (int)0 ); // version
            writer.Write( (bool)m_UseCraft);
        }

        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt( );
            switch(version)
            {
                case 0:
                {
                    m_UseCraft = reader.ReadBool();
                    break;
                }
            }
        }

        private bool AddToPack( Mobile from, PowerScroll ps )
        {
            if (ps == null)
                return false;

            if( from == null || from.Deleted || from.Backpack == null || from.Backpack.Deleted )
                return false;

            if( !from.InRange( this.GetWorldLocation(), 2 ) || !from.InLOS( this.GetWorldLocation() ) )
            {
                from.SendLocalizedMessage( 500446 ); // That is too far away.
                return false;
            }

            if( !from.Backpack.TryDropItem( from, ps, true ) )
            {
                ps.MoveToWorld( from.Location, from.Map );
            }
            return true;
        }
    }
}
 
Last edited by a moderator:

kristina

Master
cool idea!
I used this system on my test server (2010 or 2011 i dont remember exactly) and i found it in my script archives. U can try on ur test server. İt may fail in new uo server versions.

Code:
using System;
using System.Collections;
using Server.Multis;
using Server.Mobiles;
using Server.Network;

namespace Server.Items
{
    [DynamicFliping]
    [Flipable( 0x9A8, 0xE80 )]
    public class PSExchangeBox : BaseContainer
    {
        public override int DefaultGumpID { get { return 0x4B; } }
        public override int DefaultDropSound { get { return 0x42; } }
        private Mobile m_User;
        private bool m_InUse;
        private PowerScroll PSa;
        private PowerScroll PSb;
        private bool m_UseCraft;

        [CommandProperty( AccessLevel.GameMaster )]
        public bool UseCraft
        {
            get{ return m_UseCraft; }
            set
            {
                m_UseCraft = value; if ( m_UseCraft ) Name = "A PowerScroll Exchange Box: For Any PowerScroll Types are Returned"; else Name = "A PowerScroll Exchange Box: Any Non-Craft PowerScroll is Returned";
                InvalidateProperties( );
            }
        }

        [CommandProperty( AccessLevel.GameMaster )]
        public bool InUse
        {
            get{ if (!m_InUse) m_User = null; return m_InUse; }
            set{ m_InUse = value; if (!m_InUse) m_User = null; InvalidateProperties(); }
        }

        public override Rectangle2D Bounds
        {
            get { return new Rectangle2D( 16, 51, 168, 73 ); }
        }

        [Constructable]
        public PSExchangeBox( ) : base( 0x9A8 )
        {
            m_UseCraft = false;
            m_InUse = false;
            m_User = null;
            PSa = null;
            PSb = null;
            Name = "A PowerScroll Exchange Box";
            Weight = 100.0; // TODO: Real weight
        }

        [Constructable]
        public PSExchangeBox( bool usecraft ) : base( 0x9A8 )
        {
            m_UseCraft = usecraft;
            m_InUse = false;
            m_User = null;
            PSa = null;
            PSb = null;
            if (usecraft)
                Name = "A PowerScroll Exchange Box that returns any type of powerscroll";
            else
                Name = "A PowerScroll Exchange Box that does not return craftable powerscrolls";
            Weight = 100.0; // TODO: Real weight
        }

        public PSExchangeBox( Serial serial ) : base( serial )
        {
        }

        public override bool TryDropItem( Mobile from, Item dropped, bool sendFullMessage )
        {
            sendFullMessage = false;

            if ( !from.InRange( this.GetWorldLocation(), 2 ) )
            {
                from.SendMessage("You are to far away to use this item.");
                return false;
            }

            if (m_User != null && m_User != from)
            {
                from.SendMessage("This Box is currently in use by someone else.");
                return false;
            }

            if ( !(dropped is PowerScroll) )
            {
                from.SendMessage("You can only place powerscrolls in this box!");
                return false;
            }

            if (PSa != null && PSb != null)
            {
                from.SendMessage("This already contains two powerscrolls!");
                return false;
            }

            if (PSa == null)
            {
                m_InUse = true;
                m_User = from;
                from.SendMessage( "The first powerscroll has been added." );
                PSa = (PowerScroll)dropped;
                dropped.Delete();
            }
            else
            {
                if ( ( (PowerScroll)dropped ).Value == PSa.Value )
                {

                    if ( PSb == null )
                    {
                        from.SendMessage( "The second powerscroll has been added." );
                        PSb = (PowerScroll)dropped;
                        dropped.Delete( );
                    }
                }
                else
                {
                    from.SendMessage( "The Powerscrolls must both be equal value!" );
                    return false;
                }

            }

            return true;
        }

        public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
        {
            if ( !from.InRange( this.GetWorldLocation(), 2 ) )
            {
                from.SendMessage("You are to far away to use this item.");
                return false;
            }

            if ( m_User != null && m_User != from )
            {
                from.SendMessage("This Box is currently in use by someone else.");
                return false;
            }

            if ( !(item is PowerScroll) )
            {
                from.SendMessage("You can only place powerscrolls in this box!");
                return false;
            }

            if (PSa != null && PSb != null)
            {
                from.SendMessage("This already contains two powerscrolls!");
                return false;
            }

            if (PSa == null)
            {
                m_InUse = true;
                m_User = from;
                from.SendMessage( "The first powerscroll has been added." );
                PSa = (PowerScroll)item;
                item.Delete();
            }
            else
            {
                if ( ( (PowerScroll)item ).Value == PSa.Value )
                {

                    if ( PSb == null )
                    {
                        from.SendMessage( "The second powerscroll has been added." );
                        PSb = (PowerScroll)item;
                        item.Delete( );
                    }
                }
                else
                {
                    from.SendMessage( "The Powerscrolls must both be equal value!" );
                    return false;
                }

            }

            return true;
        }

        public override void OnDoubleClick( Mobile from )
        {
            PowerScroll newps = null;
            if ( from.InRange( this.GetWorldLocation(), 2 ) )
            {
                if (m_User != null && m_User == from)
                {
                    if (PSa != null && PSb == null)
                    {
                        AddToPack(m_User, new PowerScroll(PSa.Skill, PSa.Value));
                        from.SendMessage("The Single PowerScroll you had put in the box has been returned to you.");
                        m_InUse = false;
                        m_User = null;
                        PSa = null;
                        return;
                    }

                    if (PSa != null && PSb != null)
                    {
                        if (!UseCraft)
                            newps = PowerScroll.CreateRandomNoCraft( (int)(PSa.Value - 120), (int)(PSb.Value - 120) );
                        else
                            newps = PowerScroll.CreateRandom( (int)(PSa.Value - 120), (int)(PSb.Value - 120) );
                        // add the new powerscroll
                        AddToPack(m_User, newps);
                        from.SendMessage( "A new random powerscroll has been added to your pack!" );
                        m_InUse = false;
                        m_User = null;
                        PSa = null;
                        PSb = null;
                    }
                }
                else if ( m_User == null )
                {
                    from.SendMessage( "This Box is currently not in use by anyone." );
                    return;
                }
                else
                {
                    from.SendMessage("This Box is already in use by someone else.");
                    return;
                }
            }
            else
            {
                from.SendMessage("You are too far away from this Box to use it.");
                return;
            }
        }

        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );

            writer.Write( (int)0 ); // version
            writer.Write( (bool)m_UseCraft);
        }

        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt( );
            switch(version)
            {
                case 0:
                {
                    m_UseCraft = reader.ReadBool();
                    break;
                }
            }
        }

        private bool AddToPack( Mobile from, PowerScroll ps )
        {
            if (ps == null)
                return false;

            if( from == null || from.Deleted || from.Backpack == null || from.Backpack.Deleted )
                return false;

            if( !from.InRange( this.GetWorldLocation(), 2 ) || !from.InLOS( this.GetWorldLocation() ) )
            {
                from.SendLocalizedMessage( 500446 ); // That is too far away.
                return false;
            }

            if( !from.Backpack.TryDropItem( from, ps, true ) )
            {
                ps.MoveToWorld( from.Location, from.Map );
            }
            return true;
        }
    }
}


Thanks for sharing! What does this script do exactly?
 

Sandman

Grandmaster
Listen, because this makes sense it will never happen.. I had an idea similar to make the shitty tier BOD Cloth worth something and of course.. even though loads of people liked it, it will never be considered.
 
Thanks for sharing! What does this script do exactly?

Hey, throw powerscrolls to exchange barrel, and this script that will take 2 ps of the same level and give back a random PS of the same level. But if u change codes it works like ur idea.



Code:
if (PSa != null && PSb != null)
{
    if (!UseCraft)
        newps = PowerScroll.CreateRandomNoCraft( (int)(PSa.Value - 100), (int)(PSb.Value - 100) );
    else
        newps = PowerScroll.CreateRandom( (int)(PSa.Value - 100), (int)(PSb.Value - 100) );
    // add the new powerscroll
replace

Code:
if (PSa != null && PSb != null)
{
    int newValue = (int)(PSa.Value - 95)
    if ( newValue > 20 )
        newValue = 20;
    if (!UseCraft)
        newps = PowerScroll.CreateRandomNoCraft( newValue, newValue );
    else
        newps = PowerScroll.CreateRandom( newValue, newValue );
    // add the new powerscroll
 
Top