Ultima Adventures -  A full featured, content packed offline/online server

Ultima Adventures - A full featured, content packed offline/online server 1.11

No permission to download

AlishaNies

Citizen
I have been trying out this wonderful world, but have a question - does cotton even respawn? I have seen people recommend farming it for early gold, but after gathering it once it doesn't seem to grow anymore even after 12 hours of real time.

Also, what's the use for silver/bronze coins? Don't remember them even being in base game.
 

Finaltwist

Squire
hehe... you're going to have a ton of questions. Why don't you join the discord in the resource page? that's why we have it :)
 

Finaltwist

Squire
just putting this here - a player on the server has told me about an incredibly game breaking exploit with shoppes. I've had to balance shoppes quite a bit but this exploit was basically unlimited gold in 2-3 minutes. Fixed on server - just putting this here for anyone else who might be running odyssey/etc.
 

WizardTim

Citizen
It is incredibly nice of you to tell Adventures players that there is a big exploit in the game they downloaded, told them that you fixed yours, but didn't bother to tell them how to fix theirs.
 

Finaltwist

Squire
yes, i don't want to spread exploits, anyone can pm me. Say for example you were playing an odyssey server with djeryv, and you read the exploit here and then went on the server and got millions in a few mins, im sure djeryv wouldn't be happy. any game admins can pm me.

Actually here, ill tell you if you try UA again and re-rate that off-handed and despicable 0 star rating you gave. Don't talk to me about being nice.

Hah ;)
 

WizardTim

Citizen
Nice try. Djeryv doesn't run a server that I know of, and I never played your server to leave a rating. I am simply pointing out your behavior of taking things from others but not willing to give back. I am sure the gaming community appreciates your ethics. But hey, it is another way to social your media for sure. "Join the discord for this latest bug fix" "PM me for the latest bug fix" "Create a forum account to get the bug fix" because people just love making account for every platform. But I guess they can wait a few months for your next update where they have to wipe their current game out and start all over again, because of this really huge game breaking gold duping bug. At least you share with the UO emulation community when it is convenient for you.
 
Last edited:

Finaltwist

Squire
I figure I don't need to explain the exploit here, just post what i did to fix it. note the fillorder in customers.cs
I also added the feature where players can earn skill from completing shoppe orders (why not, its a great way to train up a skill)
Code is below

C#:
        public static void FillOrder( Mobile from, BaseShoppe shoppe, int customer )
        {

                string cust = "";
                if ( customer == 1 ){ cust = shoppe.Customer01; }
                else if ( customer == 2 ){ cust = shoppe.Customer02; }
                else if ( customer == 3 ){ cust = shoppe.Customer03; }
                else if ( customer == 4 ){ cust = shoppe.Customer04; }
                else if ( customer == 5 ){ cust = shoppe.Customer05; }
                else if ( customer == 6 ){ cust = shoppe.Customer06; }
                else if ( customer == 7 ){ cust = shoppe.Customer07; }
                else if ( customer == 8 ){ cust = shoppe.Customer08; }
                else if ( customer == 9 ){ cust = shoppe.Customer09; }
                else if ( customer == 10 ){ cust = shoppe.Customer10; }
                else if ( customer == 11 ){ cust = shoppe.Customer11; }
                else if ( customer == 12 ){ cust = shoppe.Customer12; }

                int taskGold = 0;
                int taskTools = 0;
                int taskResources = 0;
                int taskDifficulty = 0;
                
                    taskGold = Convert.ToInt32( Server.Misc.Customers.GetDataElement( cust, 4 ) ); //FINAL payout is in customers.cs
                    taskTools = Convert.ToInt32( Server.Misc.Customers.GetDataElement( cust, 5 ) );
                    taskResources = Convert.ToInt32( Server.Misc.Customers.GetDataElement( cust, 6 ) );
                    taskDifficulty = Server.Misc.Customers.GetChance( Server.Items.BaseShoppe.GetSkillValue( shoppe.ShelfSkill, from ), Convert.ToInt32( Server.Misc.Customers.GetDataElement( cust, 7 ) ) );
                    

            if ( (taskDifficulty <= 0) || (shoppe.ShoppeTools < taskTools) || (shoppe.ShoppeResources < taskResources) || (( shoppe.ShoppeGold + taskGold ) > 100001) )
            {
                if (from.Alive)
                    from.Kill();
                
                from.SendMessage( "CHEATING IS NOT ALLOWED HERE. " );

                shoppe.ShoppeTools = 0;
                shoppe.ShoppeResources = 0;
                shoppe.ShoppeGold = 0;

                return;
            }




            string client = shoppe.Customer01;

            if ( customer == 1 ){ client = shoppe.Customer01; }
            else if ( customer == 2 ){ client = shoppe.Customer02; }
            else if ( customer == 3 ){ client = shoppe.Customer03; }
            else if ( customer == 4 ){ client = shoppe.Customer04; }
            else if ( customer == 5 ){ client = shoppe.Customer05; }
            else if ( customer == 6 ){ client = shoppe.Customer06; }
            else if ( customer == 7 ){ client = shoppe.Customer07; }
            else if ( customer == 8 ){ client = shoppe.Customer08; }
            else if ( customer == 9 ){ client = shoppe.Customer09; }
            else if ( customer == 10 ){ client = shoppe.Customer10; }
            else if ( customer == 11 ){ client = shoppe.Customer11; }
            else if ( customer == 12 ){ client = shoppe.Customer12; }

            int difficulty = Server.Misc.Customers.GetChance( Server.Items.BaseShoppe.GetSkillValue( shoppe.ShelfSkill, from ), Convert.ToInt32( Server.Misc.Customers.GetDataElement( client, 7 ) ) );

            int tools = Convert.ToInt32( GetDataElement( client, 5 ) );
            int resources = Convert.ToInt32( GetDataElement( client, 6 ) );
            int fame = Convert.ToInt32( GetDataElement( client, 8 ) );

            if ( difficulty >= Utility.RandomMinMax( 1, 110 ) )
            {
                from.PlaySound( 0x2E6 );
                from.PlaySound( shoppe.ShelfSound );

                int gold = Convert.ToInt32( GetDataElement( client, 4 ) );

                shoppe.ShoppeReputation = shoppe.ShoppeReputation + fame;
                    if ( shoppe.ShoppeReputation > 10000 ){ shoppe.ShoppeReputation = 10000; }

                shoppe.ShoppeGold = shoppe.ShoppeGold + gold;
                    if ( shoppe.ShoppeGold > 500000 ){ shoppe.ShoppeGold = 500000; }
            }
            else
            {
                from.PlaySound( from.Female ? 812 : 1086 );
                from.PlaySound( shoppe.ShelfSound );
                int gold = Convert.ToInt32(GetDataElement(client, 4));

                shoppe.ShoppeReputation = shoppe.ShoppeReputation - fame;
                    if ( shoppe.ShoppeReputation < 0 ){ shoppe.ShoppeReputation = 0; }
                shoppe.ShoppeGold = shoppe.ShoppeGold - gold; //Sygun - Compensation for failing the job
                    if (shoppe.ShoppeGold < 0) { shoppe.ShoppeGold = 0; }
            }

            shoppe.ShoppeTools = shoppe.ShoppeTools - tools;
                if ( shoppe.ShoppeTools < 0 ){ shoppe.ShoppeTools = 0; }

            shoppe.ShoppeResources = shoppe.ShoppeResources - resources;
                if ( shoppe.ShoppeResources < 0 ){ shoppe.ShoppeResources = 0; }

            RemoveEntry( shoppe, customer );

            int poolofsnot = 1;

            if (difficulty <= 25)
                poolofsnot = 1;
            else if (difficulty <= 50)
                poolofsnot = 3;
            else if (difficulty <= 75)
                poolofsnot = 6;
            else if (difficulty <= 100)
                poolofsnot = 10;
            else if (difficulty <= 110)
                poolofsnot = 11;

            while (poolofsnot > 0)
            {
                poolofsnot -= 1;
                Server.Items.BaseShoppe.ProgressSkill( from, shoppe, difficulty );
            }
        }
 

Djeryv

Squire
I figure I don't need to explain the exploit here, just post what i did to fix it. note the fillorder in customers.cs
I also added the feature where players can earn skill from completing shoppe orders (why not, its a great way to train up a skill)
I think I see what is going on here. I'll let Chris know. If it is doing what it looks like it was doing then good fix.