Lightning strike should not consume mana or deactivate when you miss.

http://www.uodemise.com/forum/showthread.php?t=145364

BOD turn-in should have 10 second timer since pub 50 
http://www.uodemise.com/forum/showthread.php?t=156441

Vet reward ore carts, gem carts, and stumps have missing range check added
http://www.uodemise.com/forum/showthread.php?t=156380

Blood Oath: missing 35hp pvp dmg cap added, correct credit for kills/dmg given to caster, ML magic resist now applies.
http://www.uodemise.com/forum/showthread.php?t=118729&page=3

Missing ore sizes added
http://www.uodemise.com/forum/showthread.php?t=119888

Player-cast gates reveal stealthers/hiders.
http://www.uodemise.com/forum/showthread.php?t=149218

Some necro spells should disturb a casting target
http://www.uodemise.com/forum/showthread.php?t=149361

Failed snoop attempts should reveal thief if hidden.
http://www.uodemise.com/forum/showthread.php?t=153962

Pets do not autostable in the case of a server restart/cash: fixed
http://www.uodemise.com/forum/showthread.php?t=122745

Misc Aesthetic changes to spells, etc.

earthquake wrong sound
magic arrow inappropriate particles
curse wrong sound
agility wrong sound
chain lightning should always play sound
poison wrong sound
dispel evil missing sound
noble sacrifice male/female, diff sounds
sacred journey missing sound
This commit is contained in:
xavier 2010-09-25 13:48:08 +00:00
parent 0ddcac0a63
commit cd2462621f
34 changed files with 313 additions and 51 deletions

View file

@ -47,12 +47,20 @@ namespace Server.Mobiles
if ( Core.ML && Utility.RandomDouble() < .33 )
PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
Item dullore = new DullCopperOre( Utility.RandomMinMax( 1, 10 ) );
dullore.ItemID = 0x19B9;
Item shadowore = new ShadowIronOre( Utility.RandomMinMax( 1, 10 ) );
shadowore.ItemID = 0x19B9;
Item copperore = new CopperOre( Utility.RandomMinMax( 1, 10 ) );
copperore.ItemID = 0x19B9;
Item bronzeore = new BronzeOre( Utility.RandomMinMax( 1, 10 ) );
bronzeore.ItemID = 0x19B9;
switch ( Utility.Random( 4 ) )
{
case 0: PackItem( new DullCopperOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
case 1: PackItem( new ShadowIronOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
case 2: PackItem( new CopperOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
case 3: PackItem( new BronzeOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
case 0: PackItem( dullore ); break;
case 1: PackItem( shadowore ); break;
case 2: PackItem( copperore ); break;
case 3: PackItem( bronzeore ); break;
}
// TODO: skeleton

View file

@ -45,8 +45,11 @@ namespace Server.Mobiles
ControlSlots = 2;
PackItem( new FertileDirt( Utility.RandomMinMax( 1, 4 ) ) );
PackItem( new IronOre( 3 ) ); // TODO: Five small iron ore
PackItem( new MandrakeRoot() );
Item ore = new IronOre( 5 );
ore.ItemID = 0x19B7;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -39,8 +39,10 @@ namespace Server.Mobiles
VirtualArmor = 50;
PackItem( new IronOre( 3 ) );
PackItem( new BlackPearl( 3 ) );
Item ore = new IronOre( 3 );
ore.ItemID = 0x19B8;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -44,7 +44,9 @@ namespace Server.Mobiles
VirtualArmor = 32;
PackItem( new AgapiteOre( oreAmount ) );
Item ore = new AgapiteOre( oreAmount );
ore.ItemID = 0x19B9;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -46,7 +46,9 @@ namespace Server.Mobiles
VirtualArmor = 29;
PackItem( new BronzeOre( oreAmount ) );
Item ore = new BronzeOre( oreAmount );
ore.ItemID = 0x19B9;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -44,7 +44,9 @@ namespace Server.Mobiles
VirtualArmor = 26;
PackItem( new CopperOre( oreAmount ) );
Item ore = new CopperOre( oreAmount );
ore.ItemID = 0x19B9;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -44,7 +44,9 @@ namespace Server.Mobiles
VirtualArmor = 20;
PackItem( new DullCopperOre( oreAmount ) );
Item ore = new DullCopperOre( oreAmount );
ore.ItemID = 0x19B9;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -44,7 +44,9 @@ namespace Server.Mobiles
VirtualArmor = 60;
PackItem( new GoldOre( oreAmount ) );
Item ore = new GoldOre( oreAmount );
ore.ItemID = 0x19B9;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -44,7 +44,9 @@ namespace Server.Mobiles
VirtualArmor = 23;
PackItem( new ShadowIronOre( oreAmount ) );
Item ore = new ShadowIronOre( oreAmount );
ore.ItemID = 0x19B9;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -48,7 +48,9 @@ namespace Server.Mobiles
VirtualArmor = 38;
PackItem( new ValoriteOre( oreAmount ) );
Item ore = new ValoriteOre( oreAmount );
ore.ItemID = 0x19B9;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -45,7 +45,9 @@ namespace Server.Mobiles
VirtualArmor = 35;
PackItem( new VeriteOre( oreAmount ) );
Item ore = new VeriteOre( oreAmount );
ore.ItemID = 0x19B9;
PackItem( ore );
}
public override void GenerateLoot()

View file

@ -96,6 +96,7 @@ namespace Server.Mobiles
private NpcGuild m_NpcGuild;
private DateTime m_NpcGuildJoinTime;
private DateTime m_NextBODTurnInTime;
private TimeSpan m_NpcGuildGameTime;
private PlayerFlag m_Flags;
private int m_StepsTaken;
@ -207,6 +208,13 @@ namespace Server.Mobiles
set{ m_NpcGuildJoinTime = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public DateTime NextBODTurnInTime
{
get{ return m_NextBODTurnInTime; }
set{ m_NextBODTurnInTime = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public DateTime LastOnline
{
@ -581,6 +589,28 @@ namespace Server.Mobiles
EventSink.Logout += new LogoutEventHandler( OnLogout );
EventSink.Connected += new ConnectedEventHandler( EventSink_Connected );
EventSink.Disconnected += new DisconnectedEventHandler( EventSink_Disconnected );
if( Core.SE )
{
Timer.DelayCall( TimeSpan.Zero, new TimerCallback( CheckPets ) );
}
}
private static void CheckPets()
{
foreach( Mobile m in World.Mobiles.Values )
{
if( m is PlayerMobile )
{
PlayerMobile pm = (PlayerMobile)m;
if((( !pm.Mounted || ( pm.Mount != null && pm.Mount is EtherealMount )) && ( pm.AllFollowers.Count > pm.AutoStabled.Count )) ||
( pm.Mounted && ( pm.AllFollowers.Count > ( pm.AutoStabled.Count +1 ))))
{
pm.AutoStablePets(); /* autostable checks summons, et al: no need here */
}
}
}
}
public override void OnSkillInvalidated( Skill skill )
@ -2438,10 +2468,27 @@ namespace Server.Mobiles
Mobile oath = Spells.Necromancy.BloodOathSpell.GetBloodOath( from );
/* Per EA's UO Herald Pub48 (ML):
* ((resist spellsx10)/20 + 10=percentage of damage resisted)
*/
if ( oath == this )
{
amount = (int)(amount * 1.1);
from.Damage( amount, from );
if( amount > 35 && from is PlayerMobile ) /* capped @ 35, seems no expansion */
{
amount = 35;
}
if( Core.ML )
{
from.Damage( (int)(amount * ( 1 - ((( from.Skills.MagicResist.Value * .5 ) + 10) / 100 ))), this );
}
else
{
from.Damage( amount, this );
}
}
base.Damage( amount, from );
@ -2836,7 +2883,6 @@ namespace Server.Mobiles
CheckAtrophies( this );
if( Hidden ) //Hiding is the only buff where it has an effect that's serialized.
AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) );
}

View file

@ -740,8 +740,19 @@ namespace Server.Mobiles
public override bool OnDragDrop( Mobile from, Item dropped )
{
/* TODO: Thou art giving me? and fame/karma for gold gifts */
if ( dropped is SmallBOD || dropped is LargeBOD )
{
if( Core.ML )
{
if( ((PlayerMobile)from).NextBODTurnInTime > DateTime.Now )
{
SayTo( from, 1079976 ); //
return false;
}
}
if ( !IsValidBulkOrder( dropped ) || !SupportsBulkOrders( from ) )
{
SayTo( from, 1045130 ); // That order is for some other shopkeeper.
@ -777,6 +788,11 @@ namespace Server.Mobiles
OnSuccessfulBulkOrderReceive( from );
if( Core.ML )
{
((PlayerMobile)from).NextBODTurnInTime = DateTime.Now + TimeSpan.FromSeconds( 10.0 );
}
dropped.Delete();
return true;
}