- Incognito spell won't change gender anymore

(http://www.uodemise.com/discussion/showthread.php?t=117148)
- Abyss Champion spawn has Greater Mongbats in tier 1 instead of Mongbats
(http://www.uodemise.com/discussion/showthread.php?t=125248)
- BOD books won't return to page 1 anymore when picking or dropping BODs
(http://www.uodemise.com/discussion/showthread.php?t=115354)
- Added Plague Beast Lords with relative puzzle; Plague Beasts release healty glands
(http://www.uodemise.com/discussion/showthread.php?t=116548)
- Arch Cure area effect will follow OSI rules in Felucca facet
(http://www.uodemise.com/discussion/showthread.php?t=115600)
- Solen Ants Holes can spawn randomly in forest
(http://www.uodemise.com/discussion/showthread.php?t=123899)
- Death Robes will decay after 60 seconds from dropping on the ground
(http://www.uodemise.com/discussion/showthread.php?t=121188)
- Weapon speeds are indicated in seconds of delay
(http://www.uodemise.com/discussion/showthread.php?t=123707)
This commit is contained in:
daedalus 2009-10-18 14:03:59 +00:00
parent 207be3f720
commit 123af436f9
99 changed files with 2341 additions and 75 deletions

View file

@ -72,21 +72,16 @@ namespace Server.Spells.Fifth
{
DisguiseGump.StopTimer( Caster );
Caster.BodyMod = Utility.RandomList( 400, 401 );
Caster.HueMod = Utility.RandomSkinHue();
Caster.NameMod = Caster.Body.IsFemale ? NameList.RandomName( "female" ) : NameList.RandomName( "male" );
Caster.HueMod = Caster.Race.RandomSkinHue();
Caster.NameMod = Caster.Female ? NameList.RandomName( "female" ) : NameList.RandomName( "male" );
PlayerMobile pm = Caster as PlayerMobile;
if ( pm != null )
if ( pm != null && pm.Race != null )
{
if ( pm.Body.IsFemale )
pm.SetHairMods( Utility.RandomList( m_HairIDs ), 0 );
else
pm.SetHairMods( Utility.RandomList( m_HairIDs ), Utility.RandomList( m_BeardIDs ) );
pm.HairHue = Utility.RandomHairHue();
pm.FacialHairHue = Utility.RandomHairHue();
pm.SetHairMods( pm.Race.RandomHair( pm.Female ), pm.Race.RandomFacialHair( pm.Female ) );
pm.HairHue = pm.Race.RandomHairHue();
pm.FacialHairHue = pm.Race.RandomHairHue();
}
Caster.FixedParticles( 0x373A, 10, 15, 5036, EffectLayer.Head );
@ -117,7 +112,7 @@ namespace Server.Spells.Fifth
}
else
{
Caster.SendLocalizedMessage( 1005559 ); // This spell is already in effect.
Caster.SendLocalizedMessage( 1079022 ); // You're already incognitoed!
}
}

View file

@ -1,4 +1,5 @@
using System;
using Server.Mobiles;
using Server.Targeting;
using Server.Network;
@ -69,10 +70,16 @@ namespace Server.Spells.Fifth
duration *= 0.75;
}
m.Paralyze( TimeSpan.FromSeconds( duration ) );
if ( m is PlagueBeastLord )
{
( (PlagueBeastLord) m ).OnParalyzed( Caster );
duration = 120;
}
m.Paralyze( TimeSpan.FromSeconds( duration ) );
m.PlaySound( 0x204 );
m.FixedEffect( 0x376A, 6, 1 );
m.PlaySound( 0x204 );
m.FixedEffect( 0x376A, 6, 1 );
}
FinishSequence();

View file

@ -3,6 +3,7 @@ using System.Collections.Generic;
using Server.Network;
using Server.Items;
using Server.Targeting;
using Server.Mobiles;
namespace Server.Spells.Fourth
{
@ -46,15 +47,28 @@ namespace Server.Spells.Fourth
List<Mobile> targets = new List<Mobile>();
Map map = Caster.Map;
Mobile m_directtarget = p as Mobile;
if ( map != null )
{
//you can target directly someone/something and become criminal if it's a criminal action
if ( m_directtarget != null )
targets.Add ( m_directtarget );
IPooledEnumerable eable = map.GetMobilesInRange( new Point3D( p ), 2 );
foreach ( Mobile m in eable )
{
// Archcure doesn't cure aggressors or victims
if ( Caster.CanBeBeneficial( m, false ) && (!Core.AOS || !IsAggressor( m ) && !IsAggressed( m )) )
// Archcure area effect won't cure aggressors or victims, nor murderers, criminals or monsters
// plus Arch Cure Area will NEVER work on summons/pets if you are in Felucca facet
// red players can cure only themselves and guildies with arch cure area.
if ( map.Rules == MapRules.FeluccaRules )
{
if ( Caster.CanBeBeneficial( m, false ) && ( !Core.AOS || !IsAggressor( m ) && !IsAggressed( m ) && (( IsInnocentTo ( Caster, m ) && IsInnocentTo ( m, Caster ) ) || ( IsAllyTo ( Caster, m ) )) && m != m_directtarget && m is PlayerMobile || m == Caster && m != m_directtarget ))
targets.Add( m );
}
else if ( Caster.CanBeBeneficial( m, false ) && ( !Core.AOS || !IsAggressor( m ) && !IsAggressed( m ) && (( IsInnocentTo ( Caster, m ) && IsInnocentTo ( m, Caster ) ) || ( IsAllyTo ( Caster, m ) )) && m != m_directtarget || m == Caster && m != m_directtarget ))
targets.Add( m );
}
@ -119,6 +133,16 @@ namespace Server.Spells.Fourth
return false;
}
private static bool IsInnocentTo( Mobile from, Mobile to )
{
return ( Notoriety.Compute( from, (Mobile)to ) == Notoriety.Innocent );
}
private static bool IsAllyTo( Mobile from, Mobile to )
{
return ( Notoriety.Compute( from, (Mobile)to ) == Notoriety.Ally );
}
private class InternalTarget : Target
{
private ArchCureSpell m_Owner;