Alright, so I've played ultima for a while and got out of it but said for years I was gonna start a local server to my family and I could play together. I've gotten around to doing it and I'm using SERVUO. I'm up and running but I'm lost not in a complete clueless since on the scripts, editing those I understand of how to go about but not 100% sure on what to change if you catch my drift.

So I want to be able to make Bone armor dyable like Leather, using the same colors, I'd like spined bonearmor that matches the shadow iron color. I'd also like to be able to create say for instance Bone Knights that are hireable like fighters.

I know this is the script part of the forums having said that.
Other than those two things I'm completely lost on world building as far as what in the world do I do to place walls and buildings easily without typing in commands. Which program or mode or interface to bring up where I could say just click and select say stonewall and be able to continuously place it until said length of wall is finished. I tried using RUNUO which I used Pandoras Box 3 on and understood it some but RUNUO was glitched for me where you couldn't enter a house and if you teleported to the roof and walked down you got stuck in the floor hence why I scrapped it and went to SERVUO which in that regard is working fantastically. But I'm unsure of what program if any to use for micromanagment world building.
 
Sure, just replace this BoneChest code with yours and use the coding as an example for the other items in this set.

C#:
using System;

namespace Server.Items
{
    [FlipableAttribute(0x144f, 0x1454)]
    public class BoneChest : BaseArmor, IDyable
    {
        [Constructable]
        public BoneChest()
            : base(0x144F)
        {
            //this.Hue = hue;
            this.Weight = 6.0;
        }

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

        public override int BasePhysicalResistance
        {
            get
            {
                return 3;
            }
        }
        public override int BaseFireResistance
        {
            get
            {
                return 3;
            }
        }
        public override int BaseColdResistance
        {
            get
            {
                return 4;
            }
        }
        public override int BasePoisonResistance
        {
            get
            {
                return 2;
            }
        }
        public override int BaseEnergyResistance
        {
            get
            {
                return 4;
            }
        }
        public override int InitMinHits
        {
            get
            {
                return 25;
            }
        }
        public override int InitMaxHits
        {
            get
            {
                return 30;
            }
        }
        public override int AosStrReq
        {
            get
            {
                return 60;
            }
        }
        public override int OldStrReq
        {
            get
            {
                return 40;
            }
        }
        public override int OldDexBonus
        {
            get
            {
                return -6;
            }
        }
        public override int ArmorBase
        {
            get
            {
                return 30;
            }
        }
        public override int RevertArmorBase
        {
            get
            {
                return 11;
            }
        }
        public override ArmorMaterialType MaterialType
        {
            get
            {
                return ArmorMaterialType.Bone;
            }
        }
        public override CraftResource DefaultResource
        {
            get
            {
                return CraftResource.RegularLeather;
            }
        }
        public virtual bool Dye(Mobile from, DyeTub sender)
        {
            if (this.Deleted)
                return false;
            else if (this.RootParent is Mobile && from != this.RootParent)
                return false;

            this.Hue = sender.DyedHue;

            return true;
        }     
        public override void Serialize(GenericWriter writer)
        {
            base.Serialize(writer);
            writer.Write((int)0);

            if (this.Weight == 1.0)
                this.Weight = 6.0;
        }

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();
        }
    }
}

then in DyeTub.cs, Line#276
Change this line:
C#:
 else if ((item is BaseArmor && (((BaseArmor)item).MaterialType == ArmorMaterialType.Leather || ((BaseArmor)item).MaterialType == ArmorMaterialType.Studded) || item is ElvenBoots || item is WoodlandBelt) && this.m_Tub.AllowLeather)
with:
C#:
 else if ((item is BaseArmor && (((BaseArmor)item).MaterialType == ArmorMaterialType.Bone || ((BaseArmor)item).MaterialType == ArmorMaterialType.Leather || ((BaseArmor)item).MaterialType == ArmorMaterialType.Studded) || item is ElvenBoots || item is WoodlandBelt) && this.m_Tub.AllowLeather)



Then for Skeletons as Hirable fighters... well... I'd just do so simply with a bodyvalue change.
Open HireFighter.cs for example and change the bodyvalue to 59.
then add this code into HireFighter.cs

C#:
        public override bool AlwaysMurderer
        {
            get
            {
                return true;
            }
        }

As for worldbuilding, you could use Lokai's SearchImage command, Pandora's Box, UOArchitect, or UltimaLive,
or simply say [multi add ItemID# and [multi AddStatic ItemID# or [m add ItemID# and [m AddStatic ItemID# for short.
 
Last edited:
Thank you very much.
Post automatically merged:

Having trouble with the dyetub, my line 276 is blank and copying the script into an empty field is causing a syntax error.
Post automatically merged:

Nevermind, figured it out.. Your text was a little different in wording and on a different line but got it working. All is well.
 
Last edited:
Back