- Added support for ML mods, as well as quivers. More ML artifacts are added
(http://www.uodemise.com/discussion/showthread.php?t=116685) - Dog Form HPR rate is tweaked as per OSI (http://www.uodemise.com/discussion/showthread.php?t=124422) - Hairstylist gump now works for elves (http://www.uodemise.com/discussion/showthread.php?t=120199) - Bless buff icon now will report correct values (http://www.uodemise.com/discussion/showthread.php?t=123760) - When stealthing, the step just before a stealth check won't let you lose the stealth status (you can use shadowjump) (http://www.uodemise.com/discussion/showthread.php?t=121250) - You can open the blacksmith gump even if far from anvil and forge, but you still need to be near them to craft (http://www.uodemise.com/discussion/showthread.php?t=122750)
This commit is contained in:
parent
aff5e22940
commit
30c7232a69
54 changed files with 1363 additions and 149 deletions
|
|
@ -40,20 +40,20 @@ namespace Server
|
|||
|
||||
public static int Damage( Mobile m, Mobile from, int damage, int phys, int fire, int cold, int pois, int nrgy )
|
||||
{
|
||||
return Damage( m, from, damage, false, phys, fire, cold, pois, nrgy, false );
|
||||
return Damage( m, from, damage, false, phys, fire, cold, pois, nrgy, 0, 0, false, false );
|
||||
}
|
||||
|
||||
public static int Damage( Mobile m, Mobile from, int damage, bool ignoreArmor, int phys, int fire, int cold, int pois, int nrgy )
|
||||
{
|
||||
return Damage( m, from, damage, ignoreArmor, phys, fire, cold, pois, nrgy, false );
|
||||
return Damage( m, from, damage, ignoreArmor, phys, fire, cold, pois, nrgy, 0, 0, false, false );
|
||||
}
|
||||
|
||||
public static int Damage( Mobile m, Mobile from, int damage, int phys, int fire, int cold, int pois, int nrgy, bool keepAlive )
|
||||
{
|
||||
return Damage( m, from, damage, false, phys, fire, cold, pois, nrgy, keepAlive );
|
||||
return Damage( m, from, damage, false, phys, fire, cold, pois, nrgy, 0, 0, keepAlive, false );
|
||||
}
|
||||
|
||||
public static int Damage( Mobile m, Mobile from, int damage, bool ignoreArmor, int phys, int fire, int cold, int pois, int nrgy, bool keepAlive )
|
||||
public static int Damage( Mobile m, Mobile from, int damage, bool ignoreArmor, int phys, int fire, int cold, int pois, int nrgy, int chaos, int direct, bool keepAlive, bool archer )
|
||||
{
|
||||
if( m == null || m.Deleted || !m.Alive || damage <= 0 )
|
||||
return 0;
|
||||
|
|
@ -72,6 +72,25 @@ namespace Server
|
|||
Fix( ref cold );
|
||||
Fix( ref pois );
|
||||
Fix( ref nrgy );
|
||||
Fix( ref chaos );
|
||||
Fix( ref direct );
|
||||
|
||||
if ( Core.ML && chaos > 0 )
|
||||
{
|
||||
switch ( Utility.Random( 5 ) )
|
||||
{
|
||||
case 0: phys += chaos; break;
|
||||
case 1: fire += chaos; break;
|
||||
case 2: cold += chaos; break;
|
||||
case 3: pois += chaos; break;
|
||||
case 4: nrgy += chaos; break;
|
||||
}
|
||||
}
|
||||
|
||||
BaseQuiver quiver = null;
|
||||
|
||||
if ( archer && from != null )
|
||||
quiver = from.FindItemOnLayer( Layer.Cloak ) as BaseQuiver;
|
||||
|
||||
int totalDamage;
|
||||
|
||||
|
|
@ -92,16 +111,30 @@ namespace Server
|
|||
|
||||
totalDamage /= 10000;
|
||||
|
||||
if ( Core.ML )
|
||||
{
|
||||
totalDamage += damage * direct / 100;
|
||||
|
||||
if ( quiver != null )
|
||||
totalDamage += totalDamage * quiver.DamageIncrease / 100;
|
||||
}
|
||||
|
||||
if( totalDamage < 1 )
|
||||
totalDamage = 1;
|
||||
}
|
||||
else if( Core.ML && m is PlayerMobile && from is PlayerMobile )
|
||||
{
|
||||
if ( quiver != null )
|
||||
damage += damage * quiver.DamageIncrease / 100;
|
||||
|
||||
totalDamage = Math.Min( damage, 35 ); //Direct Damage cap of 35
|
||||
}
|
||||
else
|
||||
{
|
||||
totalDamage = damage;
|
||||
|
||||
if ( Core.ML && quiver != null )
|
||||
totalDamage += totalDamage * quiver.DamageIncrease / 100;
|
||||
}
|
||||
|
||||
#region Dragon Barding
|
||||
|
|
@ -264,6 +297,13 @@ namespace Server
|
|||
if( attrs != null )
|
||||
value += attrs[attribute];
|
||||
}
|
||||
else if( obj is BaseQuiver )
|
||||
{
|
||||
AosAttributes attrs = ((BaseQuiver)obj).Attributes;
|
||||
|
||||
if( attrs != null )
|
||||
value += attrs[attribute];
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
|
|
@ -280,6 +320,40 @@ namespace Server
|
|||
return "...";
|
||||
}
|
||||
|
||||
public void AddStatBonuses( Mobile to )
|
||||
{
|
||||
int strBonus = BonusStr;
|
||||
int dexBonus = BonusDex;
|
||||
int intBonus = BonusInt;
|
||||
|
||||
if ( strBonus != 0 || dexBonus != 0 || intBonus != 0 )
|
||||
{
|
||||
string modName = Owner.Serial.ToString();
|
||||
|
||||
if ( strBonus != 0 )
|
||||
to.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) );
|
||||
|
||||
if ( dexBonus != 0 )
|
||||
to.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) );
|
||||
|
||||
if ( intBonus != 0 )
|
||||
to.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) );
|
||||
}
|
||||
|
||||
to.CheckStatTimers();
|
||||
}
|
||||
|
||||
public void RemoveStatBonuses( Mobile from )
|
||||
{
|
||||
string modName = Owner.Serial.ToString();
|
||||
|
||||
from.RemoveStatMod( modName + "Str" );
|
||||
from.RemoveStatMod( modName + "Dex" );
|
||||
from.RemoveStatMod( modName + "Int" );
|
||||
|
||||
from.CheckStatTimers();
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int RegenHits { get { return this[AosAttribute.RegenHits]; } set { this[AosAttribute.RegenHits] = value; } }
|
||||
|
||||
|
|
@ -823,7 +897,9 @@ namespace Server
|
|||
Fire=0x00000002,
|
||||
Cold=0x00000004,
|
||||
Poison=0x00000008,
|
||||
Energy=0x00000010
|
||||
Energy=0x00000010,
|
||||
Chaos=0x00000020,
|
||||
Direct=0x00000040
|
||||
}
|
||||
|
||||
public sealed class AosElementAttributes : BaseAttributes
|
||||
|
|
@ -868,6 +944,12 @@ namespace Server
|
|||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Energy { get { return this[AosElementAttribute.Energy]; } set { this[AosElementAttribute.Energy] = value; } }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Chaos { get { return this[AosElementAttribute.Chaos]; } set { this[AosElementAttribute.Chaos] = value; } }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Direct { get { return this[AosElementAttribute.Direct]; } set { this[AosElementAttribute.Direct] = value; } }
|
||||
}
|
||||
|
||||
[PropertyObject]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue