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!

Enabling Spellweaving RunUO 2.0 Final

EvilPounder420

Sorceror
Enabling Spellweaving RunUO 2.0 Final *Tutorial*

Ok, so i've noticed alot of people asking how to get spellweaving to fully work and i have not been able to find a full tutorial about it myself. So i am posting this for anyone who wants to know how to fully enable spellweaving.

=================================================================


First, you will have to download the 4 missing spellweaving spells(not included with RunUO 2.0 Final) and put them in your Spellweaving Spell folder. ( Attatched Below )
RunUO -> Scripts -> Spells -> Spellweaving

Then you will have to go back to your Spells folder and find your Initializer.cs script and uncomment the following lines:


Code:
				if( Core.ML )
				{
					Register( 600, typeof( Spellweaving.ArcaneCircleSpell ) );
					Register( 601, typeof( Spellweaving.GiftOfRenewalSpell ) );
					[COLOR="Red"]//Register( 602, typeof( Spellweaving.ImmolatingWeaponSpell ) );[/COLOR]
					Register( 603, typeof( Spellweaving.AttuneWeaponSpell ) );
					Register( 604, typeof( Spellweaving.ThunderstormSpell ) );
					Register( 605, typeof( Spellweaving.NatureFurySpell ) );
					Register( 606, typeof( Spellweaving.SummonFeySpell ) );
					Register( 607, typeof( Spellweaving.SummonFiendSpell ) );
					Register( 608, typeof( Spellweaving.ReaperFormSpell ) );
					[COLOR="Red"]//Register( 609, typeof( Spellweaving.WildfireSpell ) );[/COLOR]
					Register( 610, typeof( Spellweaving.EssenceOfWindSpell ) );
					[COLOR="Red"]//Register( 611, typeof( Spellweaving.DryadAllureSpell ) );[/COLOR]
					Register( 612, typeof( Spellweaving.EtherealVoyageSpell ) );
					Register( 613, typeof( Spellweaving.WordOfDeathSpell ) );
					Register( 614, typeof( Spellweaving.GiftOfLifeSpell ) );
					[COLOR="Red"]//Register( 615, typeof( Spellweaving.ArcaneEmpowermentSpell ) );[/COLOR]
				}

=================================================================

Then...
In the baseweapon.cs (for immolating weapon) do this:


Around line 91
Right under this code:

Code:
		private bool m_Cursed; // Is this weapon cursed via Curse Weapon necromancer spell? Temporary; not serialized.
		private bool m_Consecrated; // Is this weapon blessed via Consecrate Weapon paladin ability? Temporary; not serialized.

Add this:
Code:
		#region Mondain's Legacy
		private bool m_Immolating; // Is this weapon blessed via Immolating Weapon arcanists spell? Temporary; not serialized.
		#endregion

Then, around line 206
Right under this code:

Code:
		[CommandProperty( AccessLevel.GameMaster )]
		public bool Consecrated
		{
			get{ return m_Consecrated; }
			set{ m_Consecrated = value; }
		}

Add this:
Code:
		#region Mondain's Legacy
		[CommandProperty( AccessLevel.GameMaster )]
		public bool Immolating
		{
			get{ return m_Immolating; }
			set{ m_Immolating = value; }
		}
		#endregion

Then, around line 1508
Right under this line:

Code:
			else if ( Core.AOS && damage == 0 ) // parried
			{
				if ( a != null && a.Validate( attacker ) /*&& a.CheckMana( attacker, true )*/ ) // Parried special moves have no mana cost 
				{
					a = null;
					WeaponAbility.ClearCurrentAbility( attacker );

					attacker.SendLocalizedMessage( 1061140 ); // Your attack was parried!
				}
			}

Add this:
Code:
			#region Mondain's Legacy
			if ( m_Immolating )
			{
				int d = ImmolatingWeaponSpell.GetDamage( this );
				d = AOS.Damage( defender, attacker, d, 0, 100, 0, 0, 0 );
				
				AttuneWeaponSpell.TryAbsorb( defender, ref d );
				
				if ( d > 0 )
					defender.Damage( d );				
			}			
			#endregion

=================================================================
Then...
In basecreature.cs (for dryad allure) do this:


Around line 275
Right under this code:

Code:
		public virtual Faction FactionAllegiance{ get{ return null; } }
		public virtual int FactionSilverWorth{ get{ return 30; } }

		#region Bonding
		public const bool BondingEnabled = true;

Add this:
Code:
		public virtual bool IsBondable{ get{ return ( BondingEnabled && !Summoned && !Allured ); } }

Then, around line 1534
Right under this code:

Code:
	        // Version 14
			writer.Write( (bool)m_RemoveIfUntamed );
			writer.Write( (int)m_RemoveStep );

Add this:
Code:
			#region Mondain's Legacy version 16
			writer.Write( (bool) m_Allured );
			#endregion

Then, around line 1743
Right under this code:

Code:
			if ( version >= 14 )
			{
				m_RemoveIfUntamed = reader.ReadBool();
				m_RemoveStep = reader.ReadInt();
			}

Add this:
Code:
			#region Mondain's Legacy version 15
			if ( version >= 16 )
				m_Allured = reader.ReadBool();
			#endregion

Then, around line 2410
Right under this code:

Code:
		[CommandProperty( AccessLevel.GameMaster )]
		public OrderType ControlOrder
		{
			get
			{
				return m_ControlOrder;
			}
			set
			{
				m_ControlOrder = value;

Add this:
Code:
				#region Mondain's Legacy
				if ( m_Allured )
				{
					if ( m_ControlOrder == OrderType.Release )
						Say( 502003 ); // Sorry, but no.
					else if ( m_ControlOrder != OrderType.None )
						Say( 1079120 ); // Very well.
				}
				#endregion

Then, around line 4247
Right under this code:

Code:
			if ( rights.Count > 0 )
			{
				rights[0].m_Damage = (int)(rights[0].m_Damage * 1.25);	//This would be the first valid person attacking it.  Gets a 25% bonus.  Per 1/19/07 Five on Friday

				if ( rights.Count > 1 )
					rights.Sort(); //Sort by damage

				int topDamage = rights[0].m_Damage;
				int minDamage;

				if ( hitsMax >= 3000 )
					minDamage = topDamage / 16;
				else if ( hitsMax >= 1000 )
					minDamage = topDamage / 8;
				else if ( hitsMax >= 200 )
					minDamage = topDamage / 4;
				else
					minDamage = topDamage / 2;

				for ( int i = 0; i < rights.Count; ++i )
				{
					DamageStore ds = rights[i];

					ds.m_HasRight = ( ds.m_Damage >= minDamage );
				}
			}

			return rights;
		}


Add this:
Code:
		#region Mondain's Legacy	
		private bool m_Allured;
				
		[CommandProperty( AccessLevel.GameMaster )]
		public bool Allured
		{
			get{ return m_Allured; }
			set{ m_Allured = value;	}
		}
		
		public virtual void OnRelease( Mobile from )
		{
			if ( m_Allured )
				Timer.DelayCall( TimeSpan.FromSeconds( 2 ), new TimerCallback( Delete ) );
		}
		public override void OnItemLifted( Mobile from, Item item )
		{
			base.OnItemLifted( from, item );
			
			InvalidateProperties();
		}
		#endregion

=================================================================

Then reboot your server, and enjoy. =]

I hope this helps.
 

Attachments

  • ArcaneEmpowerment.cs
    2.8 KB · Views: 122
  • DryadAllure.cs
    3.4 KB · Views: 123
  • ImmolatingWeapon.cs
    2.4 KB · Views: 113
  • Wildfire.cs
    4.1 KB · Views: 118
hmmm

Seeing these scripts are from May 2010, I suggest you to download the most recent patch here and to apply it with your SVN preferred tool (i.e. TortoiseSVN -> Apply Patch)
 

demonneraku

Traveler
ok so im asking a idiotic question cause this is my first attempt at enabling spellweaving.. how do i uncomment the lines?
 

guyjin

Wanderer
Around line 275
Right under this code:

Code:
public virtual Faction FactionAllegiance{ get{ return null; } }
public virtual int FactionSilverWorth{ get{ return 30; } }

#region Bonding
public const bool BondingEnabled = true;
Add this:
Code:
public virtual bool IsBondable{ get{ return ( BondingEnabled && !Summoned && !Allured ); } }
i have a problem in this line, the part where it says "IsBondable" i have an error where it keeps saying, "BaseCreature' already contains a definition for 'IsBondable'
any help please?
 

guyjin

Wanderer
ok so im asking a idiotic question cause this is my first attempt at enabling spellweaving.. how do i uncomment the lines?

Im pretty sure this is covered in another thread but take out the // before things to uncomment and vice versa
 

evany

Sorceror
i have a problem in this line, the part where it says "IsBondable" i have an error where it keeps saying, "BaseCreature' already contains a definition for 'IsBondable'
any help please?

You have two definitions: the new one and the old one. Where you placed the new one, under it should be the old one. Delete the old one (of course!).
 
Top