RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Drow Mobiles V2

malgrimace

Sorceror
Drow Mobiles V2.5

The Drow mobile script adds the following mobiles:

Drow Lord
(Mounted. Medium/High difficulty. Mocks players who fight it)

Drow Assassin
(Uses deadly poisin, will hide if begins to lose battle)

Drow Archer
(Medium difficulty, armed with repeating crossbow)

Drow Warrior
(Medium difficulty)

Drow Priestess
(Medium/High difficulty, mounted magic user)

Drow Dragoon
(Medium Difficulty, cavalry)

Drow Warhorse
(Modified Faction Warhorse)


Changes from the last version:
Altered name of Drow Sorceress to Drow Priestess
Added item "Drow Ring" (see below)}

DrowRing.cs

The DrowRing is a new item that is given to players who RP as Drow. It is set to unmovable - and when worn it stops the player from attacking drow - and stops the Drow attacking the player (in the same was as the Mask of Orcish Kin).
The DrowRing is named "A ring bearing the Von'Sar crest" to add a little RP variety - and could easily be renamed to any Drow household.

DrowSorceress.cs

Not that the Drow Sorceress is still added with the [add DrowSorceress command - but her title will now show as Priestess.

Drow hair

The Drows' hair will now stay on their corpses when they die, instead of disapearing.

OpossitionGroups.cs

Now added to the zip file.

Installation

Drop names.xml into "RunUO Software Team\RunUO 1.0 RC0\Data" to allow Drow names.
Drop OppositionGroup.cs into "\RunUO Software Team\RunUO 1.0 RC0\Scripts\Engines\AI\Creature"
Drop all other files anywhere in \scripts folder.
 

Attachments

  • Drow Elves V2.5.zip
    40.1 KB · Views: 689

steamin

Wanderer
Do you have an sulution?

Scripts: Compiling C# scripts...failed (6 errors, 7 warnings)
- Error: Scripts\Z\Mobiles\Drow Elves\DrowArcher.cs: CS0117: (line 79, column 1
6) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowAssassin.cs: CS0117: (line 90, column
16) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowDragoon.cs: CS0117: (line 71, column
16) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowLord.cs: CS0117: (line 90, column 16)
'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowSorceress.cs: CS0117: (line 78, colum
n 16) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowWarrior.cs: CS0117: (line 83, column
16) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.
 

Waverian

Wanderer
steamin said:
Do you have an sulution?

Scripts: Compiling C# scripts...failed (6 errors, 7 warnings)
- Error: Scripts\Z\Mobiles\Drow Elves\DrowArcher.cs: CS0117: (line 79, column 1
6) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowAssassin.cs: CS0117: (line 90, column
16) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowDragoon.cs: CS0117: (line 71, column
16) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowLord.cs: CS0117: (line 90, column 16)
'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowSorceress.cs: CS0117: (line 78, colum
n 16) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
- Error: Scripts\Z\Mobiles\Drow Elves\DrowWarrior.cs: CS0117: (line 83, column
16) 'Server.OppositionGroup' does not contain a definition for 'ElvesAndDrow'
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.
Looks like he forgot to include the script containing opposition groups?
 

malgrimace

Sorceror
Oh - sorry guys. Looks like I missed a file!!!

Change RunUO Software Team\RunUO 1.0 RC0\Scripts\Engines\AI\Creature\OppositionGroup.cs to this:

Code:
using System;
using Server;
using Server.Mobiles;

namespace Server
{
	public class OppositionGroup
	{
		private Type[][] m_Types;

		public OppositionGroup( Type[][] types )
		{
			m_Types = types;
		}

		public bool IsEnemy( object from, object target )
		{
			int fromGroup = IndexOf( from );
			int targGroup = IndexOf( target );

			return ( fromGroup != -1 && targGroup != -1 && fromGroup != targGroup );
		}

		public int IndexOf( object obj )
		{
			if ( obj == null )
				return -1;

			Type type = obj.GetType();

			for ( int i = 0; i < m_Types.Length; ++i )
			{
				Type[] group = m_Types[i];

				bool contains = false;

				for ( int j = 0; !contains && j < group.Length; ++j )
					contains = ( type == group[j] );

				if ( contains )
					return i;
			}

			return -1;
		}

		private static OppositionGroup m_TerathansAndOphidians = new OppositionGroup( new Type[][]
			{
				new Type[]
				{
					typeof( TerathanAvenger ),
					typeof( TerathanDrone ),
					typeof( TerathanMatriarch ),
					typeof( TerathanWarrior )
				},
				new Type[]
				{
					typeof( OphidianArchmage ),
					typeof( OphidianKnight ),
					typeof( OphidianMage ),
					typeof( OphidianMatriarch ),
					typeof( OphidianWarrior )
				}
			} );

		public static OppositionGroup TerathansAndOphidians
		{
			get{ return m_TerathansAndOphidians; }
		}

		private static OppositionGroup m_SavagesAndOrcs = new OppositionGroup( new Type[][]
			{
				new Type[]
				{
					typeof( Orc ),
					typeof( OrcBomber ),
					typeof( OrcBrute ),
					typeof( OrcCaptain ),
					typeof( OrcishLord ),
					typeof( OrcishMage ),
					typeof( SpawnedOrcishLord )
				},
				new Type[]
				{
					typeof( Savage ),
					typeof( SavageRider ),
					typeof( SavageRidgeback ),
					typeof( SavageShaman )
				}
			} );

		public static OppositionGroup SavagesAndOrcs
		{
			get{ return m_SavagesAndOrcs; }
		}

		private static OppositionGroup m_ElvesAndDrow = new OppositionGroup( new Type[][]
			{
				new Type[]
				{
					typeof( DrowWarrior ),
					typeof( DrowArcher ),
					typeof( DrowLord ),
					typeof( DrowDragoon ),
					typeof( DrowSorceress ),
					typeof( DrowAssassin )
				},
				new Type[]
				{
					typeof( HighElfWarrior ),
					typeof( HighElfLord ),
					typeof( HighElfArcher ),
					typeof( HighElfRider ),
					typeof( HighElfSorceress ),
					typeof( WoodElfArcher ),
					typeof( WoodElfRider ),
					typeof( WoodElfLord ),
				}
			} );

		public static OppositionGroup ElvesAndDrow
		{
			get{ return m_ElvesAndDrow; }
		}
	}
}

Sorry abotu that
 

Cutter894

Wanderer
Small Problem

I get this error when I try to run the script:

Error: Scripts\Custom\Elves\Drow Elves\DrowAssassin.cs: CS0115: (line 15, column 44) 'Server.Mobiles.DrowAssassin.GetWeaponAbility()': no suitable method found to override



This is the line that it is referring to:

public override WeaponAbility GetWeaponAbility()

Thanks for the help.
 

malgrimace

Sorceror
Did you possibly remove the script that allows special attacks (like armour ignore) - you might have if you run a pre:aos shard. Other then that - I can't think of anything that it could be and in that case, remove:
Code:
             public override WeaponAbility GetWeaponAbility()
	     {
	     return WeaponAbility.MortalStrike;
	     }
 

malgrimace

Sorceror
OKay, i've added oppositiongroup.cs and name.xml to the zip folder and altered the drow mobiles so that their hair stays on them upon death. Download version 2.5 for these changes.

(Note that the new name.xml does not contain the Elf names - so if you have my woodelf or highelf scripts - do not replace name.xml)
 

MarkC777

Wanderer
I'm really having fun with the Drow/Elves coupled with X-Ray's Monster Attack script. Thanks to you both for writing awesome code.

I'm having trouble with the Drow assassins when they hide and the battle simply halts because they won't come out. Can you tell me how it should be working so I can test it? Is there a way to get them to come out of hiding so the battle can continue?

Also, just as a tip, I set the warhorse AI to Berserk to cut down on the leftover warhorses. Now they go and get themselves killed.

Thanks,
Mark
 

Big Bob

Wanderer
need help

Im running cusom op group already. But I want the elves. I tried editing my op group to put drows on there and it dont work. any help would be great here is what i have so far u dont have to edit just show me what i have wrong


Code:
using System;
using Server;
using Server.Mobiles;

namespace Server
{
	public class OppositionGroup
	{
		private Type[][] m_Types;

		public OppositionGroup( Type[][] types )
		{
			m_Types = types;
		}

		public bool IsEnemy( object from, object target )
		{
			int fromGroup = IndexOf( from );
			int targGroup = IndexOf( target );

			return ( fromGroup != -1 && targGroup != -1 && fromGroup != targGroup );
		}

		public int IndexOf( object obj )
		{
			if ( obj == null )
				return -1;

			Type type = obj.GetType();

			for ( int i = 0; i < m_Types.Length; ++i )
			{
				Type[] group = m_Types[i];

				bool contains = false;

				for ( int j = 0; !contains && j < group.Length; ++j )
					contains = ( type == group[j] );

				if ( contains )
					return i;
			}

			return -1;
		}

		private static OppositionGroup m_ElvesAndDrow = new OppositionGroup( new Type[][]
			{
				new Type[]
				{
					typeof( DrowWarrior ),
					typeof( DrowArcher ),
					typeof( DrowLord ),
					typeof( DrowDragoon ),
					typeof( DrowSorceress ),
					typeof( DrowAssassin )
				},
				new Type[]
				{
					typeof( HighElfWarrior ),
					typeof( HighElfLord ),
					typeof( HighElfArcher ),
					typeof( HighElfRider ),
					typeof( HighElfSorceress ),
					typeof( WoodElfArcher ),
					typeof( WoodElfRider ),
					typeof( WoodElfLord ),
				}
			} );

		public static OppositionGroup ElvesAndDrow
		{
			get{ return m_ElvesAndDrow; }

		private static OppositionGroup m_TerathansAndOphidians = new OppositionGroup( new Type[][]
			{
				new Type[]
				{
					typeof( TerathanAvenger ),
					typeof( TerathanDrone ),
					typeof( TerathanMatriarch ),
					typeof( TerathanWarrior )
				},
				new Type[]
				{
					typeof( OphidianArchmage ),
					typeof( OphidianKnight ),
					typeof( OphidianMage ),
					typeof( OphidianMatriarch ),
					typeof( OphidianWarrior )
				}
			} );

		public static OppositionGroup TerathansAndOphidians
		{
			get{ return m_TerathansAndOphidians; }
		}

		private static OppositionGroup m_SavagesAndOrcs = new OppositionGroup( new Type[][]
			{
				new Type[]
				{
					typeof( Orc ),
					typeof( OrcBomber ),
					typeof( OrcBrute ),
					typeof( OrcCaptain ),
					typeof( OrcishLord ),
					typeof( OrcishMage ),
					typeof( SpawnedOrcishLord )
				},
				new Type[]
				{
					typeof( Savage ),
					typeof( SavageRider ),
					typeof( SavageRidgeback ),
					typeof( SavageShaman )
				}
			} );

		public static OppositionGroup SavagesAndOrcs
		{
			get{ return m_SavagesAndOrcs; }
		}

		private static OppositionGroup m_DragonsAndWildlife = new OppositionGroup( new Type[][]
			{
				new Type[]
				{
					typeof( Dragon ),
					typeof( Drake ),
					typeof( ShadowWyrm ),
					typeof( WhiteWyrm ),
					typeof( Wyvern ),
					typeof( AncientWyrm ),
					typeof( SerpentineDragon )
				},
				new Type[]
				{
					typeof( Bull ),
					typeof( Cow ),
					typeof( Goat ),
					typeof( Hind ),
					typeof( MountainGoat ),
					typeof( Llama ),
					typeof( PackHorse ),
					typeof( PackLlama ),
					typeof( Pig ),
					typeof( Sheep ),
					typeof( Horse ),
					typeof( GreatHart )
				}
			} );

		public static OppositionGroup DragonsAndWildlife
		{
			get{ return m_DragonsAndWildlife; }
		}
		
		private static OppositionGroup m_PolarBearAndWildlife = new OppositionGroup( new Type[][]
			{
				new Type[]
				{
					typeof( PolarBear ),
					typeof( ArticPolarBear )
				},
				new Type[]
				{
					typeof( WhiteWolf ),
					typeof( SnowLeopard ),
					typeof( Walrus ),
					typeof( IceSnake ),
					typeof( MountainGoat ),
					typeof( IceSerpent )
				}
			} );

		public static OppositionGroup PolarBearAndWildlife
		{
			get{ return m_PolarBearAndWildlife; }

		
		}
	}
}
 

malgrimace

Sorceror
Im not entirely sure about the issue with the Drow assasin. The hiding script used means it will stay out of range of an attacker until it's safe to come out - which to me, makes sense :D
 

MarkC777

Wanderer
Yes, it seems they do come out if there are players about, but if it's just Drow vs Elves, the assassins never come out and the battle halts.

Peace,
Mark
 

malgrimace

Sorceror
BIG BOB - looking at your version of OppositionGroup.cs I found this:


Code:
		public static OppositionGroup ElvesAndDrow
		{
			get{ return m_ElvesAndDrow; }

		private static OppositionGroup m_TerathansAndOphidians = new OppositionGroup( new Type[][]
			{
				new Type[]
				{
					typeof( TerathanAvenger ),
					typeof( TerathanDrone ),
					typeof( TerathanMatriarch ),
					typeof( TerathanWarrior )
				},
				new Type[]
				{
					typeof( OphidianArchmage ),
					typeof( OphidianKnight ),
					typeof( OphidianMage ),
					typeof( OphidianMatriarch ),
					typeof( OphidianWarrior )
				}
			} );

You have the group "m_ElvesAndDrow" defined - but you have terathon and orthidian mobiles listed instead of Elves.

Hope this helps :D
 

Big Bob

Wanderer
new problem

well i got my op group problem fixed but i sill got a bit of a problem with names.xml

the problem is similar to what i get when i try to view using internet explorer wich is

End tag 'names' does not match the start tag 'namelist'. Error processing resource 'file:///C:/Program Files/RunUO Software Team/RunUO 1.0 RC0/Data/names.xml'. Line 641, Position 3
 
question - the link to the elves is a dead link

can you please post the files up here for the elves also?

i would realy like to have them also

Thanks
 
Top